From: ngie Date: Sun, 11 Oct 2015 08:28:36 +0000 (+0000) Subject: Redo MFC @ r289134 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=0671442cbc2daa757ac3e5aaf754c007e092904d;p=people%2Fjulieng%2Ffreebsd.git Redo MFC @ r289134 --- diff --git a/Makefile.inc1 b/Makefile.inc1 index d4e24e4b5d37..9332b300e060 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -1003,7 +1003,9 @@ distrib-dirs: .MAKE distribution: .MAKE cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ ${IMAKE_INSTALL} ${IMAKE_MTREE} METALOG=${METALOG} ${.TARGET} - ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 installconfig + ${_+_}cd ${.CURDIR}; ${CROSSENV} PATH=${TMPPATH} \ + ${MAKE} -f Makefile.inc1 ${IMAKE_INSTALL} \ + METALOG=${METALOG} installconfig # # buildkernel and installkernel diff --git a/contrib/dma/BSDmakefile b/contrib/dma/BSDmakefile deleted file mode 100644 index af3a0ac7c34f..000000000000 --- a/contrib/dma/BSDmakefile +++ /dev/null @@ -1,28 +0,0 @@ -# $DragonFly: src/libexec/dma/Makefile,v 1.5 2008/09/19 00:36:57 corecode Exp $ -# - -version!= sh get-version.sh - -CFLAGS+= -I${.CURDIR} -CFLAGS+= -DHAVE_REALLOCF -DHAVE_STRLCPY -DHAVE_GETPROGNAME -CFLAGS+= -DLIBEXEC_PATH='"${LIBEXEC}"' -DDMA_VERSION='"${version}"' -CFLAGS+= -DCONF_PATH='"${CONFDIR}"' - -DPADD= ${LIBSSL} ${LIBCRYPTO} -LDADD= -lssl -lcrypto - -PROG= dma -SRCS= aliases_parse.y aliases_scan.l base64.c conf.c crypto.c -SRCS+= dma.c dns.c local.c mail.c net.c spool.c util.c -MAN= dma.8 - -PREFIX?= /usr/local -LIBEXEC?= ${PREFIX}/libexec -CONFDIR?= ${PREFIX}/etc/dma - -BINOWN= root -BINGRP= mail -BINMODE=2555 -WARNS?= 6 - -.include diff --git a/contrib/dma/LICENSE b/contrib/dma/LICENSE index b89e5bcd16f3..277b3e4e8be3 100644 --- a/contrib/dma/LICENSE +++ b/contrib/dma/LICENSE @@ -1,5 +1,5 @@ +Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. Copyright (c) 2008 The DragonFly Project. -Copyright (c) 2008-2011, Simon Schubert <2@0x2c.org>. All rights reserved. This code is derived from software contributed to The DragonFly Project @@ -37,7 +37,7 @@ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Copyright (c) 1995-2001 Kungliga Tekniska Högskolan +Copyright (c) 1995-2001 Kungliga Tekniska Högskolan (Royal Institute of Technology, Stockholm, Sweden). All rights reserved. diff --git a/contrib/dma/README.markdown b/contrib/dma/README.markdown index 13ff20c9aa41..3e043de33df9 100644 --- a/contrib/dma/README.markdown +++ b/contrib/dma/README.markdown @@ -15,8 +15,13 @@ incoming connections. Building -------- +In Linux: + make +In BSD: + + cd bsd && make Installation ------------ diff --git a/contrib/dma/TODO b/contrib/dma/TODO index 01de465d66af..e70814cf6127 100644 --- a/contrib/dma/TODO +++ b/contrib/dma/TODO @@ -1,5 +1,4 @@ - unquote/handle quoted local recipients -- use proper sysexit codes - handle/use ESMTP extensions - .forward support - suggest way to run a queue flush on boot diff --git a/contrib/dma/VERSION b/contrib/dma/VERSION index 490a0cdcc139..9097bf9dbe5f 100644 --- a/contrib/dma/VERSION +++ b/contrib/dma/VERSION @@ -1 +1 @@ -v0.9 +v0.10 diff --git a/contrib/dma/aliases_parse.y b/contrib/dma/aliases_parse.y index a5a9e7b32f07..46728e6f205d 100644 --- a/contrib/dma/aliases_parse.y +++ b/contrib/dma/aliases_parse.y @@ -7,8 +7,6 @@ extern int yylineno; static void yyerror(const char *); -int yywrap(void); -int yylex(void); static void yyerror(const char *msg) diff --git a/contrib/dma/aliases_scan.l b/contrib/dma/aliases_scan.l index 809d1e168731..8130c3e43098 100644 --- a/contrib/dma/aliases_scan.l +++ b/contrib/dma/aliases_scan.l @@ -1,11 +1,11 @@ %{ #include +#include "dma.h" #include "aliases_parse.h" #define YY_NO_INPUT -int yylex(void); %} %option yylineno diff --git a/contrib/dma/conf.c b/contrib/dma/conf.c index 86d72f7bf906..3e3c7d3d8bd2 100644 --- a/contrib/dma/conf.c +++ b/contrib/dma/conf.c @@ -64,7 +64,7 @@ trim_line(char *line) if (line[0] == '.') { if ((linelen + 2) > 1000) { syslog(LOG_CRIT, "Cannot escape leading dot. Buffer overflow"); - exit(1); + exit(EX_DATAERR); } memmove((line + 1), line, (linelen + 1)); line[0] = '.'; @@ -101,7 +101,7 @@ parse_authfile(const char *path) a = fopen(path, "r"); if (a == NULL) { - errlog(1, "can not open auth file `%s'", path); + errlog(EX_NOINPUT, "can not open auth file `%s'", path); /* NOTREACHED */ } @@ -121,7 +121,7 @@ parse_authfile(const char *path) au = calloc(1, sizeof(*au)); if (au == NULL) - errlog(1, "calloc failed"); + errlog(EX_OSERR, NULL); data = strdup(line); au->login = strsep(&data, "|"); @@ -131,8 +131,7 @@ parse_authfile(const char *path) if (au->login == NULL || au->host == NULL || au->password == NULL) { - errlogx(1, "syntax error in authfile %s:%d", - path, lineno); + errlogx(EX_CONFIG, "syntax error in authfile %s:%d", path, lineno); /* NOTREACHED */ } @@ -160,7 +159,7 @@ parse_conf(const char *config_path) /* Don't treat a non-existing config file as error */ if (errno == ENOENT) return; - errlog(1, "can not open config `%s'", config_path); + errlog(EX_NOINPUT, "can not open config `%s'", config_path); /* NOTREACHED */ } @@ -211,7 +210,7 @@ parse_conf(const char *config_path) } else { host = data; } - if (host && *host == 0) + if (host && *host == 0) host = NULL; if (user && *user == 0) user = NULL; @@ -232,13 +231,13 @@ parse_conf(const char *config_path) else if (strcmp(word, "NULLCLIENT") == 0 && data == NULL) config.features |= NULLCLIENT; else { - errlogx(1, "syntax error in %s:%d", config_path, lineno); + errlogx(EX_CONFIG, "syntax error in %s:%d", config_path, lineno); /* NOTREACHED */ } } if ((config.features & NULLCLIENT) && config.smarthost == NULL) { - errlogx(1, "%s: NULLCLIENT requires SMARTHOST", config_path); + errlogx(EX_CONFIG, "%s: NULLCLIENT requires SMARTHOST", config_path); /* NOTREACHED */ } diff --git a/contrib/dma/debian/NEWS b/contrib/dma/debian/NEWS deleted file mode 100644 index 36ed11a44026..000000000000 --- a/contrib/dma/debian/NEWS +++ /dev/null @@ -1,29 +0,0 @@ -dma (0.0.2010.06.17-3) unstable; urgency=low - - The default delivery mode has been changed to immediate, as it is in - the upstream version of dma; the DEFER keyword is now disabled by default - in dma.conf. - - -- Peter Pentchev Tue, 27 Jul 2010 13:26:48 +0300 - -dma (0.0.2010.06.17-1) unstable; urgency=low - - The dma spool directory format has changed. The Debian package of dma now - recommends a separate package containing the dma-migrate utility; if it is - present, it will be invoked at each periodic dma queue flush and attempt to - convert the existing old-style queued messages to the new format. In most - cases, this should not incur any performance penalties in normal operation, - since dma-migrate will scan the spool directory and ignore any new messages - (they should already be in the new format); however, if it appears that - the periodic queue flush runs take longer than usual to start up, you may - remove the dma-migrate package once you have ascertained that your queue - directory (/var/spool/dma) only contains files with names beginning with - the letters M or Q. - - This version of dma knows how to perform MX lookups, so remote delivery is - now possible directly, not through a smarthost. However, a smarthost setup - might still be preferred on many systems for various reasons - e.g. dynamic - address assignment, a central outgoing mailserver, a roaming laptop, etc. - - -- Peter Pentchev Mon, 21 Jun 2010 11:03:57 +0300 - diff --git a/contrib/dma/debian/README.Debian b/contrib/dma/debian/README.Debian deleted file mode 100644 index 564aaa75be70..000000000000 --- a/contrib/dma/debian/README.Debian +++ /dev/null @@ -1,12 +0,0 @@ -dma for Debian --------------- - -Smarthost operation by default - needs to be configured! - -After first installing dma, you need to configure it for proper operation - -whether it should deliver all outgoing e-mail messages through a single -smarthost or attempt to contact the remote mail servers directly. This should -be configured through the debconf questions, but you may change the setting -using the SMARTHOST directive in the /etc/dma/dma.conf file. - - -- Simon Schubert <2@0x2c.org> Fri, 29 Oct 2010 00:25:48 +0200 diff --git a/contrib/dma/debian/changelog b/contrib/dma/debian/changelog deleted file mode 100644 index 4d5530043529..000000000000 --- a/contrib/dma/debian/changelog +++ /dev/null @@ -1,297 +0,0 @@ -dma (0.9) unstable; urgency=low - - [ Ed Maste ] - * Be explicit about missing user. - * Allow DMA_ROOT_USER & DMA_GROUP to be overridden. - * Add compat #ifdef for older OpenSSL - * Add CONF_DIR, as in Makefile - * More detailed error message for tmp file failure. - - [ Simon Schubert ] - * spool.c: bzero contents of pointer - - -- Simon Schubert <2@0x2c.org> Mon, 03 Jun 2013 15:58:44 +0200 - -dma (0.8) unstable; urgency=low - - [ Gert van den Berg ] - * Added some more documentation on compiling - * Make Makefile and README consistent with INSTALL - - [ Sascha Wildner ] - * dma.8: Fix a few small issues. - - [ Simon Schubert ] - * dma.8: we only have 2 config files at the moment - * Merge pull request #2 from mohag/master - * don't treat -options following -q as argument to it - * deliver_remote: propagate back DNS errors - * don't complain when we can't lock a queue file during flush - * implement queue flushing prod - - -- Simon Schubert <2@0x2c.org> Fri, 30 Mar 2012 12:03:54 +0200 - -dma (0.7) unstable; urgency=low - - [ Simon Schubert ] - * add semicolon before date in Received: header - * parse_conf: fix bug with masqueraded domains - * clear up warnings found by clang static analysis - * mark printf-alike functions - - -- Simon Schubert <2@0x2c.org> Tue, 03 Jan 2012 14:53:43 +0100 - -dma (0.6) unstable; urgency=low - - [ Simon Schubert ] - * deliver_local: quote "From " more liberally - - -- Simon Schubert <2@0x2c.org> Wed, 07 Dec 2011 12:42:22 +0100 - -dma (0.5) unstable; urgency=low - - [ Simon Schubert ] - * implement masquerading using the MASQUERADE config option - * access config files at CONF_PATH, add makefile target to install conf files - * implement the "*" catch-all alias - - -- Simon Schubert <2@0x2c.org> Wed, 16 Nov 2011 13:34:43 +0100 - -dma (0.4) unstable; urgency=low - - [ Simon Schubert ] - * Makefile: put libraries at the end when linking - * LICENSE: add - * Merge commit 'refs/merge-requests/3' of git://gitorious.org/dma/dma - * Merge commit 'refs/merge-requests/4' of git://gitorious.org/dma/dma - * Add symlink for sendmail which is expected by many packages - * Makefile: create spool directories in a separate target - * Makefile: add symlink for mailq - * README: elaborate, use markdown - - [ Peter Pentchev ] - * Fix straight SSL/TLS delivery to remote MX's. - * Fix a minor memory leak discovered by cppcheck. - - -- Simon Schubert <2@0x2c.org> Wed, 16 Nov 2011 00:08:28 +0100 - -dma (0.3) unstable; urgency=low - - [ Simon Schubert ] - * todo: we create mboxes properly now - * dma-mbox-create: group mail only needs to write to mboxes - * errlog: preserve errno - * dma-mbox-create: add error/status logging - * dns_get_mx_list: handle errors properly - - [ Peter Pentchev ] - * Make add_host() really return an error code. - - [ Simon Schubert ] - * readmail: accept mail without newline at the end - - [ Peter Pentchev ] - * In OpenSSL 1.0, TLSv1_client_method() returns a const pointer. - - [ Simon Schubert ] - * make dma compile again on DragonFly - * parse_addrs: fix parsing for multiple - - -- Simon Schubert <2@0x2c.org> Sat, 09 Jul 2011 02:38:05 +0200 - -dma (0.2) unstable; urgency=low - - * Update to dma 0.2 - - debian: better mark as UNRELEASED - - add ppa makefile recipe - - TODO: suggest way to run a queue flush on boot - - partially adopt 34-manpage-defaults.patch: AUTHPATH is not set by default - - Revert "debian: better mark as UNRELEASED" - - setlogident: openlog() wants a static variable - - writequeuef: create files with g+rw - - drop privileges when run by root - - implement mbox creation via setuid helper - - debian: build with consistent flags - - debian: remove unused files - - debian: fix lintian warnings and errors - - make ppa: force lower version number - - make ppa: proper name - - -- Simon Schubert <2@0x2c.org> Sun, 31 Oct 2010 23:57:50 +0100 - -dma (0.1) unstable; urgency=low - - * Update dma to 0.1 - - -- Simon Schubert <2@0x2c.org> Fri, 29 Oct 2010 00:57:26 +0200 - -dma (0.0.2010.06.17-6) unstable; urgency=low - - * Add the 37-gnu-hurd patch to really fix the FTBFS on GNU/Hurd. - * Convert several shell output assignments from = to := - * Switch to bzip2 compression for the Debian tarball. - - -- Peter Pentchev Sun, 17 Oct 2010 00:08:33 +0300 - -dma (0.0.2010.06.17-5) unstable; urgency=low - - * Only use SA_NOCLDWAIT if available to fix the Hurd FTBFS. - - -- Peter Pentchev Thu, 07 Oct 2010 11:42:23 +0300 - -dma (0.0.2010.06.17-4) unstable; urgency=low - - * Fix an infinite loop in dma-migrate if char is unsigned. - Closes: #599172 - * Switch to Git and point the Vcs-* fields to Gitorious. - - -- Peter Pentchev Wed, 06 Oct 2010 17:30:29 +0300 - -dma (0.0.2010.06.17-3) unstable; urgency=low - - * Update the debconf translations: - - French by Steve Petruzzello; Closes: #587883 - * Bump Standards-Version to 3.9.1 with no changes. - * Disable deferred delivery by default, as in the upstream version: - - in the 03-debian-locations patch, comment the DEFER keyword in dma.conf, - as it is upstream - - refresh the 11-double-bounce.patch - - reword the README.Debian section on deferred delivery a bit - - add a news blurb - - -- Peter Pentchev Tue, 27 Jul 2010 13:34:27 +0300 - -dma (0.0.2010.06.17-2) unstable; urgency=low - - * Quick on the heels of -1 to fix a momentary lapse of reason on my part: - in the 03-debian-locations patch, revert part of the 0.0.2010.06.17-1 - change: do not set a un-overrideable default for the deferred delivery! - Closes: #587593 - * Update the debconf translations: - - Japanese by Hideki Yamane; Closes: #587543 - - -- Peter Pentchev Wed, 30 Jun 2010 11:59:46 +0300 - -dma (0.0.2010.06.17-1) unstable; urgency=low - - * New upstream version: - - no longer reports the remote port number; Closes: #544820 - - fixes some queue locking problems; Closes: #582593 - - adapt the rules file to use the GNU Makefile instead of the BSD one - - drop pmake from Build-Depends - - remove the 01-debian-build patch, overtaken by upstream changes - - in the 03-debian-locations patch, make the Debian defaults actual - defaults for the dma binary, not just in the dma.conf file - - adapt the 04-debian-setgid patch for the GNU Makefile - - in the 10-liblockfile patch, change the GNU Makefile, too - - enhance the 11-double-bounce patch a bit: - - use dma's own delqueue() function instead of a naive unlink() so - all the queue files are cleaned up - - document the Debian default for DBOUNCEPROG in the manual page - - resurrect the 13-hardening patch, correcting a couple of - unchecked asprintf(3) and vasprintf(3) invocations - - the functionality of the 20-parse-recipient patch was implemented - upstream in a different way, so replace it with a small bugfix - - remove the 22-openfiles patch, overtaken by upstream changes - - in the 24-random-message-id patch, change the GNU Makefile, too - - add the 27-int-size patch to cast a variable to the correct type - - add the 28-valid-recipient patch to fix parsing recipients out of - the message body - - add the 29-double-free patch to fix a double-free error - - add the 30-ldflags patch to honor LDFLAGS if specified - - refresh the 09-typos, 17-mailname, 23-dirent-d_type, and - 25-unsupported-starttls patches - - teach the dbounce-simple-safecat handler about the M*/Q* spool - files scheme - * Bump Standards-Version to 3.9.0 with no changes. - * Update the copyright file: - - bring it up to the latest revision of the DEP 5 - - update the upstream copyright notices - - bump the year on my copyright notice - * Remove the diffsrc rules target which was intended for my own - internal use, but has outlived its time. - * Use dpkg-buildflags from dpkg-dev >= 1.15.7~ to get the default - values for CFLAGS, CPPFLAGS, and LDFLAGS; no longer rely on - dpkg-buildpackage to set them by default. - * Add the dma-migrate utility (in a separate binary package) to convert - spool files to the new queue format (M* and Q* files for each message) - * Add a dma-migrate invocation to dma.cron.d - * Shorten the Vcs-Browser URL. - * Add the 31-sigalrm-backoff patch to force a delivery attempt on SIGALRM. - * Properly substitute the debconf-supplied values for DBOUNCEPROG and - SMARTHOST into dma.conf even if they are empty without generating - an invalid dma.conf file. - * Remove the smarthost default; dma does MX lookups now, so it doesn't - really *need* one anymore. - * Reword the debconf relayhost question - dma does not really need - a smarthost anymore. - * Update the debconf translations: - - Bulgarian - - Portuguese by Américo Monteiro - - German by Helge Kreutzmann; Closes: #586531 - - Russian by Yuri Kozlov; Closes: #586579 - - Czech by Michal Simunek; Closes: #586791 - - Swedish by Martin Bagge; Closes: #586825 - - Spanish by Francisco Javier Cuadrado; Closes: #587088 - * Update the smarthost configuration information in README.Debian. - * Add the 32-comment-uncomment patch to correct the manual page wording. - * Add the 33-opportunistic-tls patch to allow remote connections to proceed - even if the STARTTLS negotiation fails. - * Fix the 25-unsupported-starttls patch to actually error out if the SSL - negotiation fails. - * Forward all the non-Debian-specific patches upstream to Simon Schubert. - * Add the 34-manpage-defaults patch to properly document what dma will use - as default values if not specified in the config file instead of what - the default config file specifies. Closes: #544748 - * Add the 35-delivery-retry patch to try local deliveries a bit more often - and to randomize the delivery timeout to avoid locking issues. - - -- Peter Pentchev Mon, 28 Jun 2010 23:26:36 +0300 - -dma (0.0.2009.07.17-3) unstable; urgency=low - - * Really install the files in /etc/dma/ as root/mail/640 and - change the ownership of the existing files in the postinst script - when upgrading from older versions. Closes: #544664 - * Install the /usr/bin/mailq and /usr/bin/newaliases symlinks. - Closes: #558421 - * Switch to the 3.0 (quilt) source format. - * Update the debconf translations: - - add German. Closes: #552754 - - add Japanese. Closes: #554515 - - remove a double space and unfuzzy the translations. Closes: #552586 - * Fix a crash when the SMTP server does not support STARTTLS. - Closes: #547594 - * Always use the user-supplied value from the debconf query for - the smarthost and the double-bounce program. This may result in - debconf overriding a manually-edited config file, so add a note to - dma.conf stating that these values are handled via debconf. - Closes: #544663 - * Fix a misspelling of dma/dbounceprog as dma/defer in the debconf - configuration script. Oops. - - -- Peter Pentchev Sat, 19 Dec 2009 14:35:10 +0200 - -dma (0.0.2009.07.17-2) unstable; urgency=low - - * Allow the spool directory to live on a filesystem that does not - set the d_type member of the dirent structure, like XFS. - Closes: #544357 - * Randomize the Message-Id a bit more. Closes: #544475 - * Bump Standards-Version to 3.8.3 with no changes. - * Only enable the build hardening wrapper if the "hardening" build - option is specified. - * Switch the copyright file header from the Wiki to DEP 5. - * Remove the manual page ".Dx" patch - the groff version in Squeeze - knows about the .Dx mdoc macro. Add a lintian override for - the "Unknown DragonFly version" error. - * Convert the patch file headers to the DEP 3 format. - - -- Peter Pentchev Tue, 01 Sep 2009 13:36:33 +0300 - -dma (0.0.2009.07.17-1) unstable; urgency=low - - * Initial release - (Closes: #511410, #533458, #533614, #533890, #534101, #534860) - - -- Peter Pentchev Tue, 11 Aug 2009 16:08:41 +0300 diff --git a/contrib/dma/debian/compat b/contrib/dma/debian/compat deleted file mode 100644 index 7f8f011eb73d..000000000000 --- a/contrib/dma/debian/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/contrib/dma/debian/control b/contrib/dma/debian/control deleted file mode 100644 index 6eeea08aa7c0..000000000000 --- a/contrib/dma/debian/control +++ /dev/null @@ -1,37 +0,0 @@ -Source: dma -Section: mail -Priority: optional -Maintainer: Peter Pentchev -DM-Upload-Allowed: yes -Build-Depends: debhelper (>= 7.0.50), byacc, dpkg-dev (>= 1.15.7~), flex, hardening-wrapper, libssl-dev, po-debconf -Standards-Version: 3.9.1 -Homepage: http://devel.ringlet.net/mail/dma/ -Vcs-Git: git://gitorious.org/dma-roam/pkg-debian.git -Vcs-Browser: http://gitorious.org/dma-roam/pkg-debian - -Package: dma -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: mail-transport-agent -Conflicts: mail-transport-agent -Replaces: mail-transport-agent -Recommends: dma-migrate -Description: lightweight mail transport agent - The DragonFly Mail Agent is a small Mail Transport Agent (MTA), - designed for home and office use. It accepts mails from local Mail - User Agents (MUA) and delivers them either to local mailboxes or - remote SMTP servers. Remote delivery includes support for features - such as TLS/SSL and SMTP authentication. - . - dma is not intended as a replacement for full-featured MTAs like - Sendmail, Postfix, or Exim. Consequently, dma does not listen on - port 25 for incoming connections. - -Package: dma-migrate -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Enhances: dma -Description: migration utility for the DragonFly Mail Agent's spool files - The dma-migrate utility examines the DragonFly Mail Agent's mail queue - and performs any conversions from old message file formats to the most - recent one as needed. diff --git a/contrib/dma/debian/copyright b/contrib/dma/debian/copyright deleted file mode 100644 index 4ad8fbb7a80f..000000000000 --- a/contrib/dma/debian/copyright +++ /dev/null @@ -1,91 +0,0 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 -Name: dma - -Files: base64.c -Copyright: Copyright (c) 1995-2001 Kungliga Tekniska Högskolan - (Royal Institute of Technology, Stockholm, Sweden). - All rights reserved. -License: BSD-3 - -Files: conf.c crypto.c net.c -Copyright: Copyright (c) 2008 The DragonFly Project. All rights reserved. - This code is derived from software contributed to The DragonFly Project - by Matthias Schmidt , University of Marburg, - Germany. -License: BSD-3 - -Files: dfcompat.c -Copyright: Copyright (c) 1998 Todd C. Miller - Copyright (c) 1998, M. Warner Losh All rights reserved. -License: BSD-1 BSD-2 - -Files: dma.8 -Copyright: Copyright (c) 2008 The DragonFly Project. All rights reserved. -License: BSD-3 - -Files: dma.c dns.c mail.c spool.c util.c -Copyright: Copyright (c) 2008 The DragonFly Project. All rights reserved. - This code is derived from software contributed to The DragonFly Project - by Simon 'corecode' Schubert . -License: BSD-3 - -Files: dma.h -Copyright: Copyright (c) 2008 The DragonFly Project. All rights reserved. - This code is derived from software contributed to The DragonFly Project - by Simon 'corecode' Schubert and - Matthias Schmidt . -License: BSD-3 - -Files: debian/* -Copyright: Copyright (c) 2009, 2010 Peter Pentchev. -License: BSD-3 - -License: BSD-3 - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - . - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - 3. Neither the name of The DragonFly Project nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific, prior written permission. - -License: BSD-1 - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - . - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -License: BSD-2 - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - . - THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. diff --git a/contrib/dma/debian/dma-migrate.dirs b/contrib/dma/debian/dma-migrate.dirs deleted file mode 100644 index b174b445af42..000000000000 --- a/contrib/dma/debian/dma-migrate.dirs +++ /dev/null @@ -1,2 +0,0 @@ -usr/sbin -usr/share/man/man8 diff --git a/contrib/dma/debian/dma-migrate.install b/contrib/dma/debian/dma-migrate.install deleted file mode 100644 index 1c35b0afb178..000000000000 --- a/contrib/dma/debian/dma-migrate.install +++ /dev/null @@ -1 +0,0 @@ -debian/migrate/dma-migrate usr/sbin diff --git a/contrib/dma/debian/dma-migrate.manpages b/contrib/dma/debian/dma-migrate.manpages deleted file mode 100644 index 3629dbe3a288..000000000000 --- a/contrib/dma/debian/dma-migrate.manpages +++ /dev/null @@ -1 +0,0 @@ -debian/migrate/dma-migrate.8 diff --git a/contrib/dma/debian/dma.dirs b/contrib/dma/debian/dma.dirs deleted file mode 100644 index f10c0054ee33..000000000000 --- a/contrib/dma/debian/dma.dirs +++ /dev/null @@ -1,4 +0,0 @@ -etc/dma -usr/sbin -usr/share/lintian/overrides -usr/share/man/man8 diff --git a/contrib/dma/debian/dma.links b/contrib/dma/debian/dma.links deleted file mode 100644 index d9ac22a2cdc2..000000000000 --- a/contrib/dma/debian/dma.links +++ /dev/null @@ -1,6 +0,0 @@ -usr/sbin/dma usr/bin/mailq -usr/sbin/dma usr/bin/newaliases -usr/sbin/dma usr/sbin/sendmail -usr/share/man/man8/dma.8 usr/share/man/man8/mailq.8 -usr/share/man/man8/dma.8 usr/share/man/man8/newaliases.8 -usr/share/man/man8/dma.8 usr/share/man/man8/sendmail.8 diff --git a/contrib/dma/debian/dma.lintian-overrides b/contrib/dma/debian/dma.lintian-overrides deleted file mode 100644 index 03f5d6eb8369..000000000000 --- a/contrib/dma/debian/dma.lintian-overrides +++ /dev/null @@ -1,8 +0,0 @@ -dma: manpage-has-errors-from-man *Unknown DragonFly version* -dma: non-standard-dir-in-var var/mail/ -dma: non-standard-dir-perm var/spool/dma/ 0770 != 0755 -dma: non-standard-dir-perm var/spool/dma/ 2775 != 0755 -dma: non-standard-file-perm etc/dma/auth.conf 0640 != 0644 -dma: no-upstream-changelog -dma: setgid-binary usr/sbin/dma 2755 root/mail -dma: setuid-binary usr/lib/dma-mbox-create 4754 root/mail diff --git a/contrib/dma/debian/migrate/Makefile b/contrib/dma/debian/migrate/Makefile deleted file mode 100644 index cc7d3476c008..000000000000 --- a/contrib/dma/debian/migrate/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -all: dma-migrate - -clean: - rm -f dma-migrate dma-migrate.o diff --git a/contrib/dma/debian/migrate/NEWS b/contrib/dma/debian/migrate/NEWS deleted file mode 100644 index 29dca0dd335b..000000000000 --- a/contrib/dma/debian/migrate/NEWS +++ /dev/null @@ -1,6 +0,0 @@ -Change log for dma-migrate, the DragonFly Mail Agent queue migration utility. - -0.01 not yet ;) - - first public release - -Comments: Peter Pentchev diff --git a/contrib/dma/debian/migrate/dma-migrate.8 b/contrib/dma/debian/migrate/dma-migrate.8 deleted file mode 100644 index e40acef5b13d..000000000000 --- a/contrib/dma/debian/migrate/dma-migrate.8 +++ /dev/null @@ -1,98 +0,0 @@ -.\" Copyright (c) 2010 Peter Pentchev -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.Dd May 11, 2009 -.Dt dma-migrate 8 -.Os -.Sh NAME -.Nm dma-migrate -.Nd convert the DragonFly Mail Agent's queue files -.Sh SYNOPSIS -.Nm -.Op Fl v -.Op Fl d Ar spooldir -.Nm -.Op Fl h | Fl V -.Sh DESCRIPTION -The -.Nm -utility is used to convert the mail queue files in the -.Xr dma 8 -spool directory to the latest spool directory format supported by -the installed version of -.Xr dma 8 . -Currently it only handles the conversion from a single file containing -both message and delivery metadata to the M/Q format. -.Pp -The following command-line options are available: -.Bl -tag -width indent -.It Fl d -Specify the location of the -.Xr dma 8 -spool directory, default -.Pa /var/spool/dma . -.It Fl h -Display usage information and exit. -.It Fl V -Display program version information and exit. -.It Fl v -Verbose output - display diagnostic messages. -.El -.Sh ENVIRONMENT -The operation of the -.Nm -utility is currently not influenced by environment variables. -.Sh FILES -The -.Nm -utility looks for the -.Xr dma 8 -mail queue files in the -.Pa /var/spool/dma -directory, unless another location is specified by the -.Fl d -command-line option. -.Sh EXIT STATUS -The -.Nm -utility will scan the whole spool directory and attempt to convert all -suitable files there. -If there are no files to be converted, or if all the conversions are -successful, it will complete with an exit code of zero. -If any conversion errors are encountered, a message will be displayed -to the standard error stream and -.Nm -will exit with an exit code of 1 after attempting to convert the rest of -the suitable files in the spool directory. -.Sh SEE ALSO -.Xr dma 8 -.Sh STANDARDS -No standards documentation was harmed in the process of creating -.Nm . -.Sh BUGS -Please report any bugs in -.Nm -to the author. -.Sh AUTHOR -.An Peter Pentchev Aq roam@ringlet.net diff --git a/contrib/dma/debian/migrate/dma-migrate.c b/contrib/dma/debian/migrate/dma-migrate.c deleted file mode 100644 index 56bfa2adbf87..000000000000 --- a/contrib/dma/debian/migrate/dma-migrate.c +++ /dev/null @@ -1,413 +0,0 @@ -/*- - * Copyright (c) 2010 Peter Pentchev - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#define _GNU_SOURCE - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef __printflike -#ifdef __GNUC__ -#define __printflike(fmtarg, firstvararg) \ - __attribute__((__format__ (__printf__, fmtarg, firstvararg))) -#else -#define __printflike(fmtarg, firstvararg) -#endif -#endif - -#define DEFAULT_SPOOLDIR "/var/spool/dma" - -static int verbose = 0; -static char copybuf[BUFSIZ]; - -static int dma_migrate(int, const char *); - -static int open_locked(const char *, int, ...); -static void cleanup_file(int, char *); - -static void usage(int); -static void version(void); -static void debug(const char *, ...) __printflike(1, 2); - -int -main(int argc, char **argv) -{ - const char *spooldir; - int hflag, Vflag, errs, fd, res; - int ch; - DIR *d; - struct dirent *e; - struct stat sb; - - srandom((unsigned long)((time(NULL) ^ getpid()) + ((uintptr_t)argv))); - - hflag = Vflag = 0; - spooldir = DEFAULT_SPOOLDIR; - while (ch = getopt(argc, argv, "d:hVv"), ch != -1) - switch (ch) { - case 'd': - spooldir = optarg; - break; - - case 'h': - hflag = 1; - break; - - case 'V': - Vflag = 1; - break; - - case 'v': - verbose = 1; - break; - - case '?': - default: - usage(1); - /* NOTREACHED */ - } - if (Vflag) - version(); - if (hflag) - usage(0); - if (hflag || Vflag) - exit(0); - - argc -= optind; - argv += optind; - - /* Let's roll! */ - if (chdir(spooldir) == -1) - err(1, "Could not change into spool directory %s", spooldir); - if (d = opendir("."), d == NULL) - err(1, "Could not read spool directory %s", spooldir); - errs = 0; - while (e = readdir(d), e != NULL) { - /* Do we care about this entry? */ - debug("Read a directory entry: %s\n", e->d_name); - if (strncmp(e->d_name, "tmp_", 4) == 0 || - e->d_name[0] == 'M' || e->d_name[0] == 'Q' || - (e->d_type != DT_REG && e->d_type != DT_UNKNOWN)) - continue; - if (e->d_type == DT_UNKNOWN) - if (stat(e->d_name, &sb) == -1 || !S_ISREG(sb.st_mode)) - continue; - debug("- want to process it\n"); - - /* Try to lock it - skip it if dma is delivering the message */ - if (fd = open_locked(e->d_name, O_RDONLY|O_NDELAY), fd == -1) { - debug("- seems to be locked, skipping\n"); - continue; - } - - /* Okay, convert it to the M/Q schema */ - res = dma_migrate(fd, e->d_name); - close(fd); - if (res == -1) - errs++; - } - if (errs) - debug("Finished, %d conversion errors\n", errs); - else - debug("Everything seems to be all right\n"); - return (errs && 1); -} - -static int -dma_migrate(int fd, const char *fname) -{ - const char *id; - char *mname, *qname, *tempname, *sender, *recp, *line, *recpline; - int mfd, qfd, tempfd; - struct stat sb; - FILE *fp, *qfp, *mfp; - size_t sz, len; - static regex_t *qidreg = NULL; - - mfd = tempfd = qfd = -1; - mname = qname = sender = recp = line = NULL; - fp = qfp = NULL; - - if (fstat(fd, &sb) == -1) { - warn("Could not fstat(%s)", fname); - return (-1); - } - /* - * Let's just blithely assume that the queue ID *is* the filename, - * since that's the way dma did things so far. - * Well, okay, let's check it. - */ - if (qidreg == NULL) { - regex_t *nreg; - - if ((nreg = malloc(sizeof(*qidreg))) == NULL) { - warn("Could not allocate memory for a regex"); - return (-1); - } - if (regcomp(nreg, "^[a-fA-F0-9]\\+\\.[a-fA-F0-9]\\+$", 0) - != 0) { - warnx("Could not compile a dma queue ID regex"); - free(nreg); - return (-1); - } - qidreg = nreg; - } - if (regexec(qidreg, fname, 0, NULL, 0) != 0) { - warnx("The name '%s' is not a valid dma queue ID", fname); - return (-1); - } - id = fname; - debug(" - queue ID %s\n", id); - if (asprintf(&mname, "M%s", id) == -1 || - asprintf(&tempname, "tmp_%s", id) == -1 || - asprintf(&qname, "Q%s", id) == -1 || - mname == NULL || tempname == NULL || qname == NULL) - goto fail; - - /* Create the message placeholder early to avoid races */ - mfd = open_locked(mname, O_CREAT | O_EXCL | O_RDWR, 0600); - if (mfd == -1) { - warn("Could not create temporary file %s", mname); - goto fail; - } - if (stat(qname, &sb) != -1 || errno != ENOENT || - stat(tempname, &sb) != -1 || errno != ENOENT) { - warnx("Some of the queue files for %s already exist", fname); - goto fail; - } - debug(" - mfd %d names %s, %s, %s\n", mfd, mname, tempname, qname); - - fp = fdopen(fd, "r"); - if (fp == NULL) { - warn("Could not reopen the descriptor for %s", fname); - goto fail; - } - - /* Parse the header of the old-format message file */ - /* ...sender... */ - if (getline(&sender, &sz, fp) == -1) { - warn("Could not read the initial line from %s", fname); - goto fail; - } - sz = strlen(sender); - while (sz > 0 && (sender[sz - 1] == '\n' || sender[sz - 1] == '\r')) - sender[--sz] = '\0'; - if (sz == 0) { - warnx("Empty sender line in %s", fname); - goto fail; - } - debug(" - sender %s\n", sender); - /* ...recipient(s)... */ - len = strlen(fname); - recpline = NULL; - while (1) { - if (getline(&line, &sz, fp) == -1) { - warn("Could not read a recipient line from %s", fname); - goto fail; - } - sz = strlen(line); - while (sz > 0 && - (line[sz - 1] == '\n' || line[sz - 1] == '\r')) - line[--sz] = '\0'; - if (sz == 0) { - free(line); - line = NULL; - break; - } - if (recp == NULL && - strncmp(line, fname, len) == 0 && line[len] == ' ') { - recp = line + len + 1; - recpline = line; - } else { - free(line); - } - line = NULL; - } - if (recp == NULL) { - warnx("Could not find its own recipient line in %s", fname); - goto fail; - } - /* ..phew, finished with the header. */ - - tempfd = open_locked(tempname, O_CREAT | O_EXCL | O_RDWR, 0600); - if (tempfd == -1) { - warn("Could not create a queue file for %s", fname); - goto fail; - } - qfp = fdopen(tempfd, "w"); - if (qfp == NULL) { - warn("Could not fdopen(%s) for %s", tempname, fname); - goto fail; - } - mfp = fdopen(mfd, "w"); - if (mfp == NULL) { - warn("Could not fdopen(%s) for %s", mname, fname); - goto fail; - } - fprintf(qfp, "ID: %s\nSender: %s\nRecipient: %s\n", id, sender, recp); - fflush(qfp); - fsync(tempfd); - - /* Copy the message file over to mname */ - while ((sz = fread(copybuf, 1, sizeof(copybuf), fp)) > 0) - if (fwrite(copybuf, 1, sz, mfp) != sz) { - warn("Could not copy the message from %s to %s", - fname, mname); - goto fail; - } - if (ferror(fp)) { - warn("Could not read the full message from %s", fname); - goto fail; - } - fflush(mfp); - fsync(mfd); - - if (rename(tempname, qname) == -1) { - warn("Could not rename the queue file for %s", fname); - goto fail; - } - qfd = tempfd; - tempfd = -1; - if (unlink(fname) == -1) { - warn("Could not remove the old converted file %s", fname); - goto fail; - } - - fclose(fp); - fclose(qfp); - free(sender); - free(line); - free(recpline); - free(mname); - free(qname); - free(tempname); - return (0); - -fail: - if (fp != NULL) - fclose(fp); - if (qfp != NULL) - fclose(qfp); - if (sender != NULL) - free(sender); - if (line != NULL) - free(line); - if (recpline != NULL) - free(recpline); - cleanup_file(mfd, mname); - cleanup_file(qfd, qname); - cleanup_file(tempfd, tempname); - return (-1); -} - -static void -cleanup_file(int fd, char *fname) -{ - if (fd != -1) { - close(fd); - unlink(fname); - } - if (fname != NULL) - free(fname); -} - -static void -usage(int ferr) -{ - const char *s = - "Usage:\tdma-migrate [-hVv] [-d spooldir]\n" - "\t-d\tspecify the spool directory (" DEFAULT_SPOOLDIR ")\n" - "\t-h\tdisplay program usage information and exit\n" - "\t-V\tdisplay program version information and exit\n" - "\t-v\tverbose operation - display diagnostic messages"; - - if (ferr) - errx(1, "%s", s); - puts(s); -} - -static void -version(void) -{ - printf("dma-migrate 0.01 (dma 0.0.2010.06.17)\n"); -} - -static void -debug(const char *fmt, ...) -{ - va_list v; - - if (verbose < 1) - return; - va_start(v, fmt); - vfprintf(stderr, fmt, v); - va_end(v); -} - -static int -open_locked(const char *fname, int flags, ...) -{ - int mode = 0; -#ifndef O_EXLOCK - int fd, save_errno; -#endif - - if (flags & O_CREAT) { - va_list ap; - va_start(ap, flags); - mode = va_arg(ap, int); - va_end(ap); - } - -#ifndef O_EXLOCK - fd = open(fname, flags, mode); - if (fd < 0) - return(fd); - if (flock(fd, LOCK_EX|((flags & O_NONBLOCK)? LOCK_NB: 0)) < 0) { - save_errno = errno; - close(fd); - errno = save_errno; - return(-1); - } - return(fd); -#else - return(open(fname, flags|O_EXLOCK, mode)); -#endif -} diff --git a/contrib/dma/debian/rules b/contrib/dma/debian/rules deleted file mode 100755 index 461a0a8503f6..000000000000 --- a/contrib/dma/debian/rules +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Debian build rules for dma, the DragonFly mail agent - -DDIR= $(CURDIR)/debian -D= $(DDIR)/dma - -BUILDDEFS= DESTDIR=$D PREFIX=/usr - -CFLAGS:= $(shell dpkg-buildflags --get CFLAGS) -CPPFLAGS:= $(shell dpkg-buildflags --get CPPFLAGS) -LDFLAGS:= $(shell dpkg-buildflags --get LDFLAGS) - -CONFFILES= dma.conf auth.conf - -ifneq (,$(filter werror,$(DEB_BUILD_OPTIONS))) - CFLAGS+= -Werror -endif -ifneq (,$(filter nostrip,$(DEB_BUILD_OPTIONS))) - export STRIPFLAG= -endif -ifneq (,$(filter hardening,$(DEB_BUILD_OPTIONS))) -export DEB_BUILD_HARDENING=1 -else -export DEB_BUILD_HARDENING=0 -endif - -export CFLAGS CPPFLAGS LDFLAGS - -override_dh_auto_build: - $(MAKE) -f Makefile ${BUILDDEFS} - $(MAKE) -C $(DDIR)/migrate - -override_dh_auto_clean: - $(MAKE) -f Makefile clean - $(MAKE) -C $(DDIR)/migrate clean - -override_dh_auto_install: - $(MAKE) -f Makefile ${BUILDDEFS} install sendmail-link mailq-link install-spool-dirs install-etc - -override_dh_fixperms: - dh_fixperms -Xusr/sbin/dma -Xusr/lib/dma-mbox-create -Xvar/spool/dma -Xetc/dma - -override_dh_installchangelogs: - dh_installchangelogs -p dma - dh_installchangelogs -p dma-migrate debian/migrate/NEWS - -%: - dh $@ diff --git a/contrib/dma/debian/source/format b/contrib/dma/debian/source/format deleted file mode 100644 index 89ae9db8f88b..000000000000 --- a/contrib/dma/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (native) diff --git a/contrib/dma/debian/source/options b/contrib/dma/debian/source/options deleted file mode 100644 index 779dbfd0ca3a..000000000000 --- a/contrib/dma/debian/source/options +++ /dev/null @@ -1,2 +0,0 @@ -compression = "bzip2" -compression-level = 9 diff --git a/contrib/dma/dma-mbox-create.c b/contrib/dma/dma-mbox-create.c index c84652b74d47..532a7afbe0b5 100644 --- a/contrib/dma/dma-mbox-create.c +++ b/contrib/dma/dma-mbox-create.c @@ -1,9 +1,9 @@ /* - * Copyright (c) 2010 Simon Schubert <2@0x2c.org> + * Copyright (c) 2010-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert . + * by Simon Schubert <2@0x2c.org>. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -54,7 +54,7 @@ static void -logfail(const char *fmt, ...) +logfail(int exitcode, const char *fmt, ...) { int oerrno = errno; va_list ap; @@ -73,7 +73,7 @@ logfail(const char *fmt, ...) else syslog(LOG_ERR, errno ? "%m" : "unknown error"); - exit(1); + exit(exitcode); } /* @@ -98,21 +98,21 @@ main(int argc, char **argv) errno = 0; gr = getgrnam(DMA_GROUP); if (!gr) - logfail("cannot find dma group `%s'", DMA_GROUP); + logfail(EX_CONFIG, "cannot find dma group `%s'", DMA_GROUP); mail_gid = gr->gr_gid; if (setgid(mail_gid) != 0) - logfail("cannot set gid to %d (%s)", mail_gid, DMA_GROUP); + logfail(EX_NOPERM, "cannot set gid to %d (%s)", mail_gid, DMA_GROUP); if (getegid() != mail_gid) - logfail("cannot set gid to %d (%s), still at %d", mail_gid, DMA_GROUP, getegid()); + logfail(EX_NOPERM, "cannot set gid to %d (%s), still at %d", mail_gid, DMA_GROUP, getegid()); /* * We take exactly one argument: the username. */ if (argc != 2) { errno = 0; - logfail("no arguments"); + logfail(EX_USAGE, "no arguments"); } user = argv[1]; @@ -121,7 +121,7 @@ main(int argc, char **argv) /* the username may not contain a pathname separator */ if (strchr(user, '/')) { errno = 0; - logfail("path separator in username `%s'", user); + logfail(EX_DATAERR, "path separator in username `%s'", user); exit(1); } @@ -129,7 +129,7 @@ main(int argc, char **argv) errno = 0; pw = getpwnam(user); if (!pw) - logfail("cannot find user `%s'", user); + logfail(EX_NOUSER, "cannot find user `%s'", user); user_uid = pw->pw_uid; @@ -137,20 +137,20 @@ main(int argc, char **argv) if (error < 0 || (size_t)error >= sizeof(fn)) { if (error >= 0) { errno = 0; - logfail("mbox path too long"); + logfail(EX_USAGE, "mbox path too long"); } - logfail("cannot build mbox path for `%s/%s'", _PATH_MAILDIR, user); + logfail(EX_CANTCREAT, "cannot build mbox path for `%s/%s'", _PATH_MAILDIR, user); } f = open(fn, O_RDONLY|O_CREAT, 0600); if (f < 0) - logfail("cannot open mbox `%s'", fn); + logfail(EX_NOINPUT, "cannt open mbox `%s'", fn); if (fchown(f, user_uid, mail_gid)) - logfail("cannot change owner of mbox `%s'", fn); + logfail(EX_OSERR, "cannot change owner of mbox `%s'", fn); if (fchmod(f, 0620)) - logfail("cannot change permissions of mbox `%s'", fn); + logfail(EX_OSERR, "cannot change permissions of mbox `%s'", fn); /* file should be present with the right owner and permissions */ diff --git a/contrib/dma/dma.8 b/contrib/dma/dma.8 index 5d786c6be2ca..76ab174fe590 100644 --- a/contrib/dma/dma.8 +++ b/contrib/dma/dma.8 @@ -1,4 +1,5 @@ .\" +.\" Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. .\" Copyright (c) 2008 .\" The DragonFly Project. All rights reserved. .\" diff --git a/contrib/dma/dma.c b/contrib/dma/dma.c index a3a62c9bac40..0d1dba2af32d 100644 --- a/contrib/dma/dma.c +++ b/contrib/dma/dma.c @@ -1,8 +1,9 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert . + * by Simon Schubert <2@0x2c.org>. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -247,7 +248,7 @@ go_background(struct queue *queue) if (daemonize && daemon(0, 0) != 0) { syslog(LOG_ERR, "can not daemonize: %m"); - exit(1); + exit(EX_OSERR); } daemonize = 0; @@ -264,7 +265,7 @@ go_background(struct queue *queue) switch (pid) { case -1: syslog(LOG_ERR, "can not fork: %m"); - exit(1); + exit(EX_OSERR); break; case 0: @@ -286,11 +287,11 @@ retit: break; case 1: if (doqueue) - exit(0); + exit(EX_OK); syslog(LOG_WARNING, "could not lock queue file"); - exit(1); + exit(EX_SOFTWARE); default: - exit(1); + exit(EX_SOFTWARE); } dropspool(queue, it); return (it); @@ -306,7 +307,7 @@ retit: } syslog(LOG_CRIT, "reached dead code"); - exit(1); + exit(EX_SOFTWARE); } static void @@ -331,12 +332,12 @@ retry: case 0: delqueue(it); syslog(LOG_INFO, "delivery successful"); - exit(0); + exit(EX_OK); case 1: if (stat(it->queuefn, &st) != 0) { syslog(LOG_ERR, "lost queue file `%s'", it->queuefn); - exit(1); + exit(EX_SOFTWARE); } if (gettimeofday(&now, NULL) == 0 && (now.tv_sec - st.st_mtim.tv_sec > MAX_TIMEOUT)) { @@ -438,16 +439,16 @@ main(int argc, char **argv) pw = getpwnam(DMA_ROOT_USER); if (pw == NULL) { if (errno == 0) - errx(1, "user '%s' not found", DMA_ROOT_USER); + errx(EX_CONFIG, "user '%s' not found", DMA_ROOT_USER); else - err(1, "cannot drop root privileges"); + err(EX_OSERR, "cannot drop root privileges"); } if (setuid(pw->pw_uid) != 0) - err(1, "cannot drop root privileges"); + err(EX_OSERR, "cannot drop root privileges"); if (geteuid() == 0 || getuid() == 0) - errx(1, "cannot drop root privileges"); + errx(EX_OSERR, "cannot drop root privileges"); } atexit(deltmp); @@ -460,15 +461,15 @@ main(int argc, char **argv) argv++; argc--; showq = 1; if (argc != 0) - errx(1, "invalid arguments"); + errx(EX_USAGE, "invalid arguments"); goto skipopts; } else if (strcmp(argv[0], "newaliases") == 0) { logident_base = "dma"; setlogident("%s", logident_base); if (read_aliases() != 0) - errx(1, "could not parse aliases file `%s'", config.aliases); - exit(0); + errx(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases); + exit(EX_OK); } opterr = 0; @@ -547,7 +548,7 @@ main(int argc, char **argv) default: fprintf(stderr, "invalid argument: `-%c'\n", optopt); - exit(1); + exit(EX_USAGE); } } argc -= optind; @@ -555,10 +556,10 @@ main(int argc, char **argv) opterr = 1; if (argc != 0 && (showq || doqueue)) - errx(1, "sending mail and queue operations are mutually exclusive"); + errx(EX_USAGE, "sending mail and queue operations are mutually exclusive"); if (showq + doqueue > 1) - errx(1, "conflicting queue operations"); + errx(EX_USAGE, "conflicting queue operations"); skipopts: if (logident_base == NULL) @@ -578,7 +579,7 @@ skipopts: if (showq) { if (load_queue(&queue) < 0) - errlog(1, "can not load queue"); + errlog(EX_NOINPUT, "can not load queue"); show_queue(&queue); return (0); } @@ -586,38 +587,38 @@ skipopts: if (doqueue) { flushqueue_signal(); if (load_queue(&queue) < 0) - errlog(1, "can not load queue"); + errlog(EX_NOINPUT, "can not load queue"); run_queue(&queue); return (0); } if (read_aliases() != 0) - errlog(1, "could not parse aliases file `%s'", config.aliases); + errlog(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases); if ((sender = set_from(&queue, sender)) == NULL) - errlog(1, "set_from failed"); + errlog(EX_SOFTWARE, NULL); if (newspoolf(&queue) != 0) - errlog(1, "can not create temp file in `%s'", config.spooldir); + errlog(EX_CANTCREAT, "can not create temp file in `%s'", config.spooldir); setlogident("%s", queue.id); for (i = 0; i < argc; i++) { if (add_recp(&queue, argv[i], EXPAND_WILDCARD) != 0) - errlogx(1, "invalid recipient `%s'", argv[i]); + errlogx(EX_DATAERR, "invalid recipient `%s'", argv[i]); } if (LIST_EMPTY(&queue.queue) && !recp_from_header) - errlogx(1, "no recipients"); + errlogx(EX_NOINPUT, "no recipients"); if (readmail(&queue, nodot, recp_from_header) != 0) - errlog(1, "can not read mail"); + errlog(EX_NOINPUT, "can not read mail"); if (LIST_EMPTY(&queue.queue)) - errlogx(1, "no recipients"); + errlogx(EX_NOINPUT, "no recipients"); if (linkspool(&queue) != 0) - errlog(1, "can not create spools"); + errlog(EX_CANTCREAT, "can not create spools"); /* From here on the mail is safe. */ diff --git a/contrib/dma/dma.h b/contrib/dma/dma.h index 4ce00944a5ee..acf5e44d07bc 100644 --- a/contrib/dma/dma.h +++ b/contrib/dma/dma.h @@ -1,8 +1,9 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert and + * by Simon Schubert <2@0x2c.org> and * Matthias Schmidt . * * Redistribution and use in source and binary forms, with or without @@ -43,6 +44,7 @@ #include #include #include +#include #define VERSION "DragonFly Mail Agent " DMA_VERSION @@ -173,6 +175,8 @@ extern char errmsg[ERRMSG_SIZE]; /* aliases_parse.y */ int yyparse(void); +int yywrap(void); +int yylex(void); extern FILE *yyin; /* conf.c */ diff --git a/contrib/dma/dns.c b/contrib/dma/dns.c index fc5213f1ca60..dd9ebfca8d82 100644 --- a/contrib/dma/dns.c +++ b/contrib/dma/dns.c @@ -1,8 +1,9 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert + * by Simon Schubert <2@0x2c.org>. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -67,7 +68,6 @@ add_host(int pref, const char *host, int port, struct mx_hostentry **he, size_t char servname[10]; struct mx_hostentry *p; const int count_inc = 10; - int err; memset(&hints, 0, sizeof(hints)); hints.ai_family = PF_UNSPEC; @@ -75,9 +75,26 @@ add_host(int pref, const char *host, int port, struct mx_hostentry **he, size_t hints.ai_protocol = IPPROTO_TCP; snprintf(servname, sizeof(servname), "%d", port); - err = getaddrinfo(host, servname, &hints, &res0); - if (err) - return (err == EAI_AGAIN ? 1 : -1); + switch (getaddrinfo(host, servname, &hints, &res0)) { + case 0: + break; + case EAI_AGAIN: + case EAI_NONAME: + /* + * EAI_NONAME gets returned for: + * SMARTHOST set but DNS server not reachable -> defer + * SMARTHOST set but DNS server returns "host does not exist" + * -> buggy configuration + * -> either defer or bounce would be ok -> defer + * MX entry was returned by DNS server but name doesn't resolve + * -> hopefully transient situation -> defer + * all other DNS problems should have been caught earlier + * in dns_get_mx_list(). + */ + goto out; + default: + return(-1); + } for (res = res0; res != NULL; res = res->ai_next) { if (*ps + 1 >= roundup(*ps, count_inc)) { diff --git a/contrib/dma/get-version.sh b/contrib/dma/get-version.sh index aecc3331f446..d9691ac37c95 100755 --- a/contrib/dma/get-version.sh +++ b/contrib/dma/get-version.sh @@ -1,7 +1,9 @@ #!/bin/sh +tmp=$1 +file=${tmp:=VERSION} gitver=$(git describe 2>/dev/null | tr - .) -filever=$(cat VERSION) +filever=$(cat ${file} 2>/dev/null) version=${gitver} : ${version:=$filever} diff --git a/contrib/dma/local.c b/contrib/dma/local.c index 6a6407ef8652..e3e015217fea 100644 --- a/contrib/dma/local.c +++ b/contrib/dma/local.c @@ -1,8 +1,9 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert . + * by Simon Schubert <2@0x2c.org>. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -81,7 +82,7 @@ create_mbox(const char *name) execl(LIBEXEC_PATH "/dma-mbox-create", "dma-mbox-create", name, NULL); syslog(LOG_ERR, "cannot execute "LIBEXEC_PATH"/dma-mbox-create: %m"); - exit(1); + exit(EX_SOFTWARE); default: /* parent */ diff --git a/contrib/dma/mail.c b/contrib/dma/mail.c index f899d4b1af2e..a6d11fcae685 100644 --- a/contrib/dma/mail.c +++ b/contrib/dma/mail.c @@ -1,8 +1,9 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert . + * by Simon Schubert <2@0x2c.org>. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -51,7 +52,7 @@ bounce(struct qitem *it, const char *reason) /* Don't bounce bounced mails */ if (it->sender[0] == 0) { syslog(LOG_INFO, "can not bounce a bounce message, discarding"); - exit(1); + exit(EX_SOFTWARE); } bzero(&bounceq, sizeof(bounceq)); @@ -132,7 +133,7 @@ bounce(struct qitem *it, const char *reason) fail: syslog(LOG_CRIT, "error creating bounce: %m"); delqueue(it); - exit(1); + exit(EX_IOERR); } struct parse_state { @@ -332,10 +333,10 @@ newaddr: ps->pos = 0; addr = strdup(ps->addr); if (addr == NULL) - errlog(1, "strdup failed"); + errlog(EX_SOFTWARE, NULL); if (add_recp(queue, addr, EXPAND_WILDCARD) != 0) - errlogx(1, "invalid recipient `%s'", addr); + errlogx(EX_DATAERR, "invalid recipient `%s'", addr); goto again; } @@ -374,7 +375,9 @@ readmail(struct queue *queue, int nodot, int recp_from_header) if (fgets(line, sizeof(line) - 1, stdin) == NULL) break; if (had_last_line) - errlogx(1, "bad mail input format"); + errlogx(EX_DATAERR, "bad mail input format:" + " from %s (uid %d) (envelope-from %s)", + username, useruid, queue->sender); linelen = strlen(line); if (linelen == 0 || line[linelen - 1] != '\n') { /* @@ -405,7 +408,7 @@ readmail(struct queue *queue, int nodot, int recp_from_header) if (parse_state.state != NONE) { if (parse_addrs(&parse_state, line, queue) < 0) { - errlogx(1, "invalid address in header\n"); + errlogx(EX_DATAERR, "invalid address in header\n"); /* NOTREACHED */ } } @@ -416,7 +419,7 @@ readmail(struct queue *queue, int nodot, int recp_from_header) strprefixcmp(line, "Bcc:") == 0)) { parse_state.state = START; if (parse_addrs(&parse_state, line, queue) < 0) { - errlogx(1, "invalid address in header\n"); + errlogx(EX_DATAERR, "invalid address in header\n"); /* NOTREACHED */ } } diff --git a/contrib/dma/net.c b/contrib/dma/net.c index d95a7884b87e..26935a8feec8 100644 --- a/contrib/dma/net.c +++ b/contrib/dma/net.c @@ -1,4 +1,5 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project diff --git a/contrib/dma/spool.c b/contrib/dma/spool.c index 2864909cf6a6..d71332b7d7f9 100644 --- a/contrib/dma/spool.c +++ b/contrib/dma/spool.c @@ -1,8 +1,9 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert . + * by Simon Schubert <2@0x2c.org>. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -289,7 +290,7 @@ load_queue(struct queue *queue) spooldir = opendir(config.spooldir); if (spooldir == NULL) - err(1, "reading queue"); + err(EX_NOINPUT, "reading queue"); while ((de = readdir(spooldir)) != NULL) { queuefn = NULL; diff --git a/contrib/dma/util.c b/contrib/dma/util.c index a139b20d3831..d528f313d091 100644 --- a/contrib/dma/util.c +++ b/contrib/dma/util.c @@ -1,8 +1,9 @@ /* + * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>. * Copyright (c) 2008 The DragonFly Project. All rights reserved. * * This code is derived from software contributed to The DragonFly Project - * by Simon 'corecode' Schubert . + * by Simon Schubert <2@0x2c.org>. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/libc/sys/shmctl.2 b/lib/libc/sys/shmctl.2 index 98ddf13e8ec4..788e79f1900d 100644 --- a/lib/libc/sys/shmctl.2 +++ b/lib/libc/sys/shmctl.2 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 17, 1995 +.Dd October 10, 2015 .Dt SHMCTL 2 .Os .Sh NAME @@ -72,15 +72,18 @@ or it must have superuser privileges. .It Dv IPC_RMID Removes the segment from the system. The removal will not take -effect until all processes having attached the segment have exited; -however, once the IPC_RMID operation has taken place, no further -processes will be allowed to attach the segment. +effect until all processes having attached the segment have exited. For the operation to succeed, the calling process's effective uid must match .Fa shm_perm.uid or .Fa shm_perm.cuid , or the process must have superuser privileges. +If the +.Va kern.ipc.shm_allow_removed +.Xr sysctl 3 +variable is set to 0, once the IPC_RMID operation has taken place, +no further processes will be allowed to attach the segment. .\" .It Dv SHM_LOCK .\" Locks the segment in memory. The calling process must have .\" superuser privileges. Not implemented in FreeBSD. diff --git a/libexec/dma/Makefile.inc b/libexec/dma/Makefile.inc index cdc9cea2bfae..e9a0d0a1c614 100644 --- a/libexec/dma/Makefile.inc +++ b/libexec/dma/Makefile.inc @@ -7,7 +7,7 @@ DMA_SOURCES= ${.CURDIR}/../../../contrib/dma CFLAGS= -I${DMA_SOURCES} \ -DHAVE_REALLOCF -DHAVE_STRLCPY -DHAVE_GETPROGNAME \ -DCONF_PATH='"/etc/dma"' \ - -DLIBEXEC_PATH='"/usr/libexec"' -DDMA_VERSION='"v0.9+"' \ + -DLIBEXEC_PATH='"/usr/libexec"' -DDMA_VERSION='"v0.10"' \ -DDMA_ROOT_USER='"mailnull"' \ -DDMA_GROUP='"mail"' BINGRP= mail diff --git a/libexec/dma/dmagent/Makefile b/libexec/dma/dmagent/Makefile index 6a45a8d598b2..6ce13c03c4a0 100644 --- a/libexec/dma/dmagent/Makefile +++ b/libexec/dma/dmagent/Makefile @@ -17,7 +17,7 @@ SRCS= aliases_parse.y \ util.c MAN8= dma.8 CONFS= dma.conf -CONFSDIR= ${ETCDIR}/dma +CONFSDIR= ${CONFIGDIR}/dma YFLAGS+= -i CLEANFILES= aliases_parse.i FILES= mailer.conf diff --git a/sbin/geom/class/nop/gnop.8 b/sbin/geom/class/nop/gnop.8 index c83c2f56ba1f..fc7732db1564 100644 --- a/sbin/geom/class/nop/gnop.8 +++ b/sbin/geom/class/nop/gnop.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 15, 2015 +.Dd October 10, 2015 .Dt GNOP 8 .Os .Sh NAME @@ -72,9 +72,10 @@ The utility is used for setting up transparent providers on existing ones. Its main purpose is testing other GEOM classes, as it allows forced provider removal and I/O error simulation with a given probability. -It also gathers the following statistics: number of read requests, number of -write requests, number of bytes read and number of bytes written. -In addition, it can be used as a good starting point for implementing new GEOM +It also gathers statistics on the number of read, write, delete, +getattr, flush, and other requests, and the number of bytes read and written. +.Nm +can also be used as a good starting point for implementing new GEOM classes. .Pp The first argument to diff --git a/sbin/mdconfig/mdconfig.8 b/sbin/mdconfig/mdconfig.8 index 6818d7bb9513..d5000cf1903a 100644 --- a/sbin/mdconfig/mdconfig.8 +++ b/sbin/mdconfig/mdconfig.8 @@ -37,7 +37,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 6, 2015 +.Dd October 10, 2015 .Dt MDCONFIG 8 .Os .Sh NAME @@ -159,11 +159,11 @@ prefix. Size of the memory disk. .Ar Size is the number of 512 byte sectors unless suffixed with a -.Cm b , k , m , g , +.Cm b , k , m , g , t , or -.Cm t +.Cm p which -denotes byte, kilobyte, megabyte, gigabyte and terabyte respectively. +denotes byte, kilobyte, megabyte, gigabyte, terabyte and petabyte respectively. When used without the .Fl r option, the diff --git a/sbin/mdconfig/mdconfig.c b/sbin/mdconfig/mdconfig.c index d741c7770cfc..1b4e4ce2fa40 100644 --- a/sbin/mdconfig/mdconfig.c +++ b/sbin/mdconfig/mdconfig.c @@ -88,8 +88,8 @@ usage(void) fprintf(stderr, "\t\ttype = {malloc, vnode, swap}\n"); fprintf(stderr, "\t\toption = {cluster, compress, reserve}\n"); fprintf(stderr, "\t\tsize = %%d (512 byte blocks), %%db (B),\n"); - fprintf(stderr, "\t\t %%dk (kB), %%dm (MB), %%dg (GB) or\n"); - fprintf(stderr, "\t\t %%dt (TB)\n"); + fprintf(stderr, "\t\t %%dk (kB), %%dm (MB), %%dg (GB), \n"); + fprintf(stderr, "\t\t %%dt (TB), or %%dp (PB)\n"); exit(1); } @@ -217,6 +217,9 @@ main(int argc, char **argv) else if (*p == 't' || *p == 'T') { mdio.md_mediasize <<= 30; mdio.md_mediasize <<= 10; + } else if (*p == 'p' || *p == 'P') { + mdio.md_mediasize <<= 30; + mdio.md_mediasize <<= 20; } else errx(1, "unknown suffix on -s argument"); break; diff --git a/share/man/man4/vtnet.4 b/share/man/man4/vtnet.4 index 8825049ad6a7..0e733e5d86ba 100644 --- a/share/man/man4/vtnet.4 +++ b/share/man/man4/vtnet.4 @@ -52,9 +52,9 @@ device driver provides support for VirtIO Ethernet devices. If the hypervisor advertises the appreciate features, the .Nm driver supports TCP/UDP checksum offload for both transmit and receive, -TCP segmentation offload (TSO), TCP large receive offload (LRO), and -hardware VLAN tag stripping/insertion features, as well as a multicast -hash filter, as well as Jumbo Frames (up to 9216 bytes), which can be +TCP segmentation offload (TSO), TCP large receive offload (LRO), +hardware VLAN tag stripping/insertion features, a multicast hash filter, +as well as Jumbo Frames (up to 9216 bytes), which can be configured via the interface MTU setting. Selecting an MTU larger than 1500 bytes with the .Xr ifconfig 8 diff --git a/share/mk/Makefile b/share/mk/Makefile index eaa8e0f82867..a3560b92ff5c 100644 --- a/share/mk/Makefile +++ b/share/mk/Makefile @@ -13,6 +13,7 @@ FILES= \ bsd.README \ bsd.arch.inc.mk \ bsd.compiler.mk \ + bsd.confs.mk \ bsd.cpu.mk \ bsd.crunchgen.mk \ bsd.dep.mk \ diff --git a/share/mk/bsd.confs.mk b/share/mk/bsd.confs.mk index a65410c0346a..4e219e828bcf 100644 --- a/share/mk/bsd.confs.mk +++ b/share/mk/bsd.confs.mk @@ -22,7 +22,7 @@ all: buildconfig ${group}OWN?= ${SHAREOWN} ${group}GRP?= ${SHAREGRP} ${group}MODE?= ${CONFMODE} -${group}DIR?= ${ETCDIR}/ +${group}DIR?= ${CONFIGDIR}/ STAGE_SETS+= ${group} STAGE_DIR.${group}= ${STAGE_OBJTOP}${${group}DIR} STAGE_SYMLINKS_DIR.${group}= ${STAGE_OBJTOP} diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index 450db0844862..53fd073a44ba 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -213,7 +213,7 @@ NLSGRP?= ${SHAREGRP} NLSMODE?= ${NOBINMODE} INCLUDEDIR?= /usr/include -ETCDIR?= /etc +CONFIGDIR?= /etc # # install(1) parameters. diff --git a/sys/dev/cxgbe/iw_cxgbe/cm.c b/sys/dev/cxgbe/iw_cxgbe/cm.c index b665289d7473..71f54879adde 100644 --- a/sys/dev/cxgbe/iw_cxgbe/cm.c +++ b/sys/dev/cxgbe/iw_cxgbe/cm.c @@ -99,7 +99,7 @@ static int abort_connection(struct c4iw_ep *ep); static void peer_close_upcall(struct c4iw_ep *ep); static void peer_abort_upcall(struct c4iw_ep *ep); static void connect_reply_upcall(struct c4iw_ep *ep, int status); -static void connect_request_upcall(struct c4iw_ep *ep); +static int connect_request_upcall(struct c4iw_ep *ep); static void established_upcall(struct c4iw_ep *ep); static void process_mpa_reply(struct c4iw_ep *ep); static void process_mpa_request(struct c4iw_ep *ep); @@ -1216,7 +1216,6 @@ static int abort_connection(struct c4iw_ep *ep) int err; CTR2(KTR_IW_CXGBE, "%s:abB %p", __func__, ep); - close_complete_upcall(ep, -ECONNRESET); state_set(&ep->com, ABORTING); abort_socket(ep); err = close_socket(&ep->com, 0); @@ -1319,9 +1318,10 @@ static void connect_reply_upcall(struct c4iw_ep *ep, int status) CTR2(KTR_IW_CXGBE, "%s:cruE %p", __func__, ep); } -static void connect_request_upcall(struct c4iw_ep *ep) +static int connect_request_upcall(struct c4iw_ep *ep) { struct iw_cm_event event; + int ret; CTR3(KTR_IW_CXGBE, "%s: ep %p, mpa_v1 %d", __func__, ep, ep->tried_with_mpa_v1); @@ -1355,10 +1355,14 @@ static void connect_request_upcall(struct c4iw_ep *ep) } c4iw_get_ep(&ep->com); - ep->parent_ep->com.cm_id->event_handler(ep->parent_ep->com.cm_id, + ret = ep->parent_ep->com.cm_id->event_handler(ep->parent_ep->com.cm_id, &event); + if(ret) + c4iw_put_ep(&ep->com); + set_bit(CONNREQ_UPCALL, &ep->com.history); c4iw_put_ep(&ep->parent_ep->com); + return ret; } static void established_upcall(struct c4iw_ep *ep) @@ -1835,9 +1839,11 @@ abort: /* drive upcall */ mutex_lock(&ep->parent_ep->com.mutex); - if (ep->parent_ep->com.state != DEAD) - connect_request_upcall(ep); - else + if (ep->parent_ep->com.state != DEAD) { + if(connect_request_upcall(ep)) { + abort_connection(ep); + } + }else abort_connection(ep); mutex_unlock(&ep->parent_ep->com.mutex); } @@ -2213,7 +2219,7 @@ int c4iw_ep_disconnect(struct c4iw_ep *ep, int abrupt, gfp_t gfp) CTR2(KTR_IW_CXGBE, "%s:ced1 %p", __func__, ep); fatal = 1; - close_complete_upcall(ep, -EIO); + close_complete_upcall(ep, -ECONNRESET); ep->com.state = DEAD; } CTR3(KTR_IW_CXGBE, "%s:ced2 %p %s", __func__, ep, diff --git a/sys/dev/drm2/i915/i915_gem.c b/sys/dev/drm2/i915/i915_gem.c index 3a59623bf6ec..07b516c07ed4 100644 --- a/sys/dev/drm2/i915/i915_gem.c +++ b/sys/dev/drm2/i915/i915_gem.c @@ -2527,10 +2527,8 @@ i915_gem_object_unbind(struct drm_i915_gem_object *obj) if (obj->gtt_space == NULL) return 0; - if (obj->pin_count) { - DRM_ERROR("Attempting to unbind pinned buffer\n"); + if (obj->pin_count) return -EINVAL; - } ret = i915_gem_object_finish_gpu(obj); if (ret == -ERESTARTSYS || ret == -EINTR) diff --git a/sys/dev/iicbus/icee.c b/sys/dev/iicbus/icee.c index bb06aa36e110..800ec4c6dff7 100644 --- a/sys/dev/iicbus/icee.c +++ b/sys/dev/iicbus/icee.c @@ -48,7 +48,7 @@ __FBSDID("$FreeBSD$"); struct icee_softc { device_t sc_dev; /* Myself */ - struct sx sc_lock; /* basically a perimeter lock */ + device_t sc_busdev; /* Parent bus */ struct cdev *cdev; /* user interface */ int addr; int size; /* How big am I? */ @@ -57,12 +57,6 @@ struct icee_softc { int wr_sz; /* What's the write page size */ }; -#define ICEE_LOCK(_sc) sx_xlock(&(_sc)->sc_lock) -#define ICEE_UNLOCK(_sc) sx_xunlock(&(_sc)->sc_lock) -#define ICEE_LOCK_INIT(_sc) sx_init(&_sc->sc_lock, "icee") -#define ICEE_LOCK_DESTROY(_sc) sx_destroy(&_sc->sc_lock); -#define ICEE_ASSERT_LOCKED(_sc) sx_assert(&_sc->sc_lock, SA_XLOCKED); -#define ICEE_ASSERT_UNLOCKED(_sc) sx_assert(&_sc->sc_lock, SA_UNLOCKED); #define CDEV2SOFTC(dev) ((dev)->si_drv1) /* cdev routines */ @@ -97,6 +91,7 @@ icee_attach(device_t dev) int dunit, err; sc->sc_dev = dev; + sc->sc_busdev = device_get_parent(sc->sc_dev); sc->addr = iicbus_get_addr(dev); err = 0; dname = device_get_name(dev); @@ -117,7 +112,6 @@ icee_attach(device_t dev) goto out; } sc->cdev->si_drv1 = sc; - ICEE_LOCK_INIT(sc); out: return (err); } @@ -155,7 +149,9 @@ icee_read(struct cdev *dev, struct uio *uio, int ioflag) return (EIO); if (sc->type != 8 && sc->type != 16) return (EINVAL); - ICEE_LOCK(sc); + error = iicbus_request_bus(sc->sc_busdev, sc->sc_dev, IIC_INTRWAIT); + if (error!= 0) + return (iic2errno(error)); slave = error = 0; while (uio->uio_resid > 0) { if (uio->uio_offset >= sc->size) @@ -180,13 +176,15 @@ icee_read(struct cdev *dev, struct uio *uio, int ioflag) for (i = 0; i < 2; i++) msgs[i].slave = slave; error = iicbus_transfer(sc->sc_dev, msgs, 2); - if (error) + if (error) { + error = iic2errno(error); break; + } error = uiomove(data, len, uio); if (error) break; } - ICEE_UNLOCK(sc); + iicbus_release_bus(sc->sc_busdev, sc->sc_dev); return (error); } @@ -214,7 +212,10 @@ icee_write(struct cdev *dev, struct uio *uio, int ioflag) return (EIO); if (sc->type != 8 && sc->type != 16) return (EINVAL); - ICEE_LOCK(sc); + + error = iicbus_request_bus(sc->sc_busdev, sc->sc_dev, IIC_INTRWAIT); + if (error!= 0) + return (iic2errno(error)); slave = error = 0; while (uio->uio_resid > 0) { if (uio->uio_offset >= sc->size) @@ -239,18 +240,22 @@ icee_write(struct cdev *dev, struct uio *uio, int ioflag) if (error) break; error = iicbus_transfer(sc->sc_dev, wr, 1); - if (error) + if (error) { + error = iic2errno(error); break; + } /* Read after write to wait for write-done. */ waitlimit = 10000; rd[0].slave = slave; do { error = iicbus_transfer(sc->sc_dev, rd, 1); } while (waitlimit-- > 0 && error != 0); - if (error) + if (error) { + error = iic2errno(error); break; + } } - ICEE_UNLOCK(sc); + iicbus_release_bus(sc->sc_busdev, sc->sc_dev); return error; } diff --git a/sys/dev/iicbus/iiconf.h b/sys/dev/iicbus/iiconf.h index 462165682a85..aca0137d7ea0 100644 --- a/sys/dev/iicbus/iiconf.h +++ b/sys/dev/iicbus/iiconf.h @@ -43,6 +43,7 @@ #define IIC_NOINTR 0 #define IIC_WAIT 0x1 #define IIC_INTR 0x2 +#define IIC_INTRWAIT (IIC_INTR | IIC_WAIT) /* * i2c modes diff --git a/sys/dev/wpi/if_wpi.c b/sys/dev/wpi/if_wpi.c index a36c2ed404e2..dfd6424c7109 100644 --- a/sys/dev/wpi/if_wpi.c +++ b/sys/dev/wpi/if_wpi.c @@ -156,7 +156,7 @@ static void wpi_update_rx_ring_ps(struct wpi_softc *); static void wpi_reset_rx_ring(struct wpi_softc *); static void wpi_free_rx_ring(struct wpi_softc *); static int wpi_alloc_tx_ring(struct wpi_softc *, struct wpi_tx_ring *, - int); + uint8_t); static void wpi_update_tx_ring(struct wpi_softc *, struct wpi_tx_ring *); static void wpi_update_tx_ring_ps(struct wpi_softc *, struct wpi_tx_ring *); @@ -165,19 +165,18 @@ static void wpi_free_tx_ring(struct wpi_softc *, struct wpi_tx_ring *); static int wpi_read_eeprom(struct wpi_softc *, uint8_t macaddr[IEEE80211_ADDR_LEN]); static uint32_t wpi_eeprom_channel_flags(struct wpi_eeprom_chan *); -static void wpi_read_eeprom_band(struct wpi_softc *, int); -static int wpi_read_eeprom_channels(struct wpi_softc *, int); +static void wpi_read_eeprom_band(struct wpi_softc *, uint8_t); +static int wpi_read_eeprom_channels(struct wpi_softc *, uint8_t); static struct wpi_eeprom_chan *wpi_find_eeprom_channel(struct wpi_softc *, struct ieee80211_channel *); static int wpi_setregdomain(struct ieee80211com *, struct ieee80211_regdomain *, int, struct ieee80211_channel[]); -static int wpi_read_eeprom_group(struct wpi_softc *, int); -static int wpi_add_node_entry_adhoc(struct wpi_softc *); +static int wpi_read_eeprom_group(struct wpi_softc *, uint8_t); static struct ieee80211_node *wpi_node_alloc(struct ieee80211vap *, const uint8_t mac[IEEE80211_ADDR_LEN]); static void wpi_node_free(struct ieee80211_node *); -static void wpi_recv_mgmt(struct ieee80211_node *, struct mbuf *, int, +static void wpi_ibss_recv_mgmt(struct ieee80211_node *, struct mbuf *, int, const struct ieee80211_rx_stats *, int, int); static void wpi_restore_node(void *, struct ieee80211_node *); @@ -210,7 +209,8 @@ static void wpi_watchdog_rfkill(void *); static void wpi_scan_timeout(void *); static void wpi_tx_timeout(void *); static void wpi_parent(struct ieee80211com *); -static int wpi_cmd(struct wpi_softc *, int, const void *, size_t, int); +static int wpi_cmd(struct wpi_softc *, uint8_t, const void *, uint16_t, + int); static int wpi_mrr_setup(struct wpi_softc *); static int wpi_add_node(struct wpi_softc *, struct ieee80211_node *); static int wpi_add_broadcast_node(struct wpi_softc *, int); @@ -257,7 +257,8 @@ static int wpi_key_set(struct ieee80211vap *, static int wpi_key_delete(struct ieee80211vap *, const struct ieee80211_key *); static int wpi_post_alive(struct wpi_softc *); -static int wpi_load_bootcode(struct wpi_softc *, const uint8_t *, int); +static int wpi_load_bootcode(struct wpi_softc *, const uint8_t *, + uint32_t); static int wpi_load_firmware(struct wpi_softc *); static int wpi_read_firmware(struct wpi_softc *); static void wpi_unload_firmware(struct wpi_softc *); @@ -327,7 +328,8 @@ wpi_attach(device_t dev) { struct wpi_softc *sc = (struct wpi_softc *)device_get_softc(dev); struct ieee80211com *ic; - int i, error, rid; + uint8_t i; + int error, rid; #ifdef WPI_DEBUG int supportsa = 1; const struct wpi_ident *ident; @@ -387,10 +389,11 @@ wpi_attach(device_t dev) sc->sc_st = rman_get_bustag(sc->mem); sc->sc_sh = rman_get_bushandle(sc->mem); - i = 1; - rid = 0; - if (pci_alloc_msi(dev, &i) == 0) + rid = 1; + if (pci_alloc_msi(dev, &rid) == 0) rid = 1; + else + rid = 0; /* Install interrupt handler. */ sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE | (rid != 0 ? 0 : RF_SHAREABLE)); @@ -422,7 +425,7 @@ wpi_attach(device_t dev) } /* Allocate TX rings - 4 for QoS purposes, 1 for commands. */ - for (i = 0; i < WPI_NTXQUEUES; i++) { + for (i = 0; i < WPI_DRV_NTXQUEUES; i++) { if ((error = wpi_alloc_tx_ring(sc, &sc->txq[i], i)) != 0) { device_printf(dev, "could not allocate TX ring %d, error %d\n", i, @@ -637,8 +640,10 @@ wpi_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit, /* Override with driver methods. */ vap->iv_key_set = wpi_key_set; vap->iv_key_delete = wpi_key_delete; - wvp->wv_recv_mgmt = vap->iv_recv_mgmt; - vap->iv_recv_mgmt = wpi_recv_mgmt; + if (opmode == IEEE80211_M_IBSS) { + wvp->wv_recv_mgmt = vap->iv_recv_mgmt; + vap->iv_recv_mgmt = wpi_ibss_recv_mgmt; + } wvp->wv_newstate = vap->iv_newstate; vap->iv_newstate = wpi_newstate; vap->iv_update_beacon = wpi_update_beacon; @@ -677,7 +682,7 @@ wpi_detach(device_t dev) { struct wpi_softc *sc = device_get_softc(dev); struct ieee80211com *ic = &sc->sc_ic; - int qid; + uint8_t qid; DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_BEGIN, __func__); @@ -708,7 +713,7 @@ wpi_detach(device_t dev) if (sc->txq[0].data_dmat) { /* Free DMA resources. */ - for (qid = 0; qid < WPI_NTXQUEUES; qid++) + for (qid = 0; qid < WPI_DRV_NTXQUEUES; qid++) wpi_free_tx_ring(sc, &sc->txq[qid]); wpi_free_rx_ring(sc); @@ -828,9 +833,9 @@ wpi_prph_clrbits(struct wpi_softc *sc, uint32_t addr, uint32_t mask) static __inline void wpi_prph_write_region_4(struct wpi_softc *sc, uint32_t addr, - const uint32_t *data, int count) + const uint32_t *data, uint32_t count) { - for (; count > 0; count--, data++, addr += 4) + for (; count != 0; count--, data++, addr += 4) wpi_prph_write(sc, addr, *data); } @@ -1088,6 +1093,7 @@ wpi_update_rx_ring_ps(struct wpi_softc *sc) return; } + WPI_TXQ_LOCK(sc); WPI_SETBITS(sc, WPI_GP_CNTRL, WPI_GP_CNTRL_MAC_ACCESS_REQ); if (WPI_READ(sc, WPI_GP_CNTRL) & WPI_GP_CNTRL_SLEEP) { DPRINTF(sc, WPI_DEBUG_PWRSAVE, "%s: wakeup request\n", @@ -1097,6 +1103,7 @@ wpi_update_rx_ring_ps(struct wpi_softc *sc) wpi_update_rx_ring(sc); WPI_CLRBITS(sc, WPI_GP_CNTRL, WPI_GP_CNTRL_MAC_ACCESS_REQ); } + WPI_TXQ_UNLOCK(sc); } static void @@ -1152,7 +1159,7 @@ wpi_free_rx_ring(struct wpi_softc *sc) } static int -wpi_alloc_tx_ring(struct wpi_softc *sc, struct wpi_tx_ring *ring, int qid) +wpi_alloc_tx_ring(struct wpi_softc *sc, struct wpi_tx_ring *ring, uint8_t qid) { bus_addr_t paddr; bus_size_t size; @@ -1181,16 +1188,6 @@ wpi_alloc_tx_ring(struct wpi_softc *sc, struct wpi_tx_ring *ring, int qid) bus_dmamap_sync(sc->shared_dma.tag, sc->shared_dma.map, BUS_DMASYNC_PREWRITE); - /* - * We only use rings 0 through 4 (4 EDCA + cmd) so there is no need - * to allocate commands space for other rings. - * XXX Do we really need to allocate descriptors for other rings? - */ - if (qid > WPI_CMD_QUEUE_NUM) { - DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END, __func__); - return 0; - } - size = WPI_TX_RING_COUNT * sizeof (struct wpi_tx_cmd); error = wpi_dma_contig_alloc(sc, &ring->cmd_dma, (void **)&ring->cmd, size, 4); @@ -1332,7 +1329,8 @@ wpi_read_eeprom(struct wpi_softc *sc, uint8_t macaddr[IEEE80211_ADDR_LEN]) if ((error = res) != 0) \ goto fail; \ } while (0) - int error, i; + uint8_t i; + int error; DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_BEGIN, __func__); @@ -1416,14 +1414,14 @@ wpi_eeprom_channel_flags(struct wpi_eeprom_chan *channel) } static void -wpi_read_eeprom_band(struct wpi_softc *sc, int n) +wpi_read_eeprom_band(struct wpi_softc *sc, uint8_t n) { struct ieee80211com *ic = &sc->sc_ic; struct wpi_eeprom_chan *channels = sc->eeprom_channels[n]; const struct wpi_chan_band *band = &wpi_bands[n]; struct ieee80211_channel *c; - uint8_t chan; - int i, nflags; + uint32_t nflags; + uint8_t chan, i; for (i = 0; i < band->nchan; i++) { if (!(channels[i].flags & WPI_EEPROM_CHAN_VALID)) { @@ -1473,7 +1471,7 @@ wpi_read_eeprom_band(struct wpi_softc *sc, int n) * band and update net80211 with what we find. */ static int -wpi_read_eeprom_channels(struct wpi_softc *sc, int n) +wpi_read_eeprom_channels(struct wpi_softc *sc, uint8_t n) { struct ieee80211com *ic = &sc->sc_ic; const struct wpi_chan_band *band = &wpi_bands[n]; @@ -1537,7 +1535,7 @@ wpi_setregdomain(struct ieee80211com *ic, struct ieee80211_regdomain *rd, } static int -wpi_read_eeprom_group(struct wpi_softc *sc, int n) +wpi_read_eeprom_group(struct wpi_softc *sc, uint8_t n) { struct wpi_power_group *group = &sc->groups[n]; struct wpi_eeprom_group rgroup; @@ -1575,10 +1573,10 @@ wpi_read_eeprom_group(struct wpi_softc *sc, int n) return 0; } -static int +static __inline uint8_t wpi_add_node_entry_adhoc(struct wpi_softc *sc) { - int newid = WPI_ID_IBSS_MIN; + uint8_t newid = WPI_ID_IBSS_MIN; for (; newid <= WPI_ID_IBSS_MAX; newid++) { if ((sc->nodesmsk & (1 << newid)) == 0) { @@ -1590,7 +1588,7 @@ wpi_add_node_entry_adhoc(struct wpi_softc *sc) return WPI_ID_UNDEFINED; } -static __inline int +static __inline uint8_t wpi_add_node_entry_sta(struct wpi_softc *sc) { sc->nodesmsk |= 1 << WPI_ID_BSS; @@ -1660,7 +1658,7 @@ wpi_check_bss_filter(struct wpi_softc *sc) } static void -wpi_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype, +wpi_ibss_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf) { @@ -1671,8 +1669,7 @@ wpi_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype, wvp->wv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); - if (vap->iv_opmode == IEEE80211_M_IBSS && - vap->iv_state == IEEE80211_S_RUN && + if (vap->iv_state == IEEE80211_S_RUN && (subtype == IEEE80211_FC0_SUBTYPE_BEACON || subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP)) { ni_tstamp = le64toh(ni->ni_tstamp.tsf); @@ -2585,7 +2582,9 @@ wpi_cmd2(struct wpi_softc *sc, struct wpi_buf *buf) struct wpi_tx_ring *ring; struct mbuf *m1; bus_dma_segment_t *seg, segs[WPI_MAX_SCATTER]; - int error, i, hdrlen, nsegs, totlen, pad; + uint8_t pad; + uint16_t hdrlen; + int error, i, nsegs, totlen; WPI_TXQ_LOCK(sc); @@ -2596,7 +2595,7 @@ wpi_cmd2(struct wpi_softc *sc, struct wpi_buf *buf) if (__predict_false(sc->sc_running == 0)) { /* wpi_stop() was called */ error = ENETDOWN; - goto fail; + goto end; } wh = mtod(buf->m, struct ieee80211_frame *); @@ -2605,7 +2604,7 @@ wpi_cmd2(struct wpi_softc *sc, struct wpi_buf *buf) if (__predict_false(totlen < sizeof(struct ieee80211_frame_min))) { error = EINVAL; - goto fail; + goto end; } if (hdrlen & 3) { @@ -2636,7 +2635,7 @@ wpi_cmd2(struct wpi_softc *sc, struct wpi_buf *buf) if (error != 0 && error != EFBIG) { device_printf(sc->sc_dev, "%s: can't map mbuf (error %d)\n", __func__, error); - goto fail; + goto end; } if (error != 0) { /* Too many DMA segments, linearize mbuf. */ @@ -2645,17 +2644,29 @@ wpi_cmd2(struct wpi_softc *sc, struct wpi_buf *buf) device_printf(sc->sc_dev, "%s: could not defrag mbuf\n", __func__); error = ENOBUFS; - goto fail; + goto end; } buf->m = m1; error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, buf->m, segs, &nsegs, BUS_DMA_NOWAIT); if (__predict_false(error != 0)) { + /* XXX fix this (applicable to the iwn(4) too) */ + /* + * NB: Do not return error; + * original mbuf does not exist anymore. + */ device_printf(sc->sc_dev, "%s: can't map mbuf (error %d)\n", __func__, error); - goto fail; + if (ring->qid < WPI_CMD_QUEUE_NUM) { + if_inc_counter(buf->ni->ni_vap->iv_ifp, + IFCOUNTER_OERRORS, 1); + ieee80211_free_node(buf->ni); + } + m_freem(buf->m); + error = 0; + goto end; } } @@ -2699,19 +2710,12 @@ wpi_cmd2(struct wpi_softc *sc, struct wpi_buf *buf) WPI_TXQ_STATE_UNLOCK(sc); } - DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END, __func__); - - WPI_TXQ_UNLOCK(sc); - - return 0; - -fail: m_freem(buf->m); - - DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END_ERR, __func__); +end: DPRINTF(sc, WPI_DEBUG_TRACE, error ? TRACE_STR_END_ERR : TRACE_STR_END, + __func__); WPI_TXQ_UNLOCK(sc); - return error; + return (error); } /* @@ -2730,9 +2734,9 @@ wpi_tx_data(struct wpi_softc *sc, struct mbuf *m, struct ieee80211_node *ni) struct wpi_buf tx_data; struct wpi_cmd_data *tx = (struct wpi_cmd_data *)&tx_data.data; uint32_t flags; - uint16_t qos; - uint8_t tid, type; - int ac, error, swcrypt, rate, ismcast, totlen; + uint16_t ac, qos; + uint8_t tid, type, rate; + int swcrypt, ismcast, totlen; wh = mtod(m, struct ieee80211_frame *); type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; @@ -2772,10 +2776,9 @@ wpi_tx_data(struct wpi_softc *sc, struct mbuf *m, struct ieee80211_node *ni) if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { /* Retrieve key for TX. */ k = ieee80211_crypto_encap(ni, m); - if (k == NULL) { - error = ENOBUFS; - goto fail; - } + if (k == NULL) + return (ENOBUFS); + swcrypt = k->wk_flags & IEEE80211_KEY_SWCRYPT; /* 802.11 header may have moved. */ @@ -2844,8 +2847,7 @@ wpi_tx_data(struct wpi_softc *sc, struct mbuf *m, struct ieee80211_node *ni) if (wn->id == WPI_ID_UNDEFINED) { device_printf(sc->sc_dev, "%s: undefined node id\n", __func__); - error = EINVAL; - goto fail; + return (EINVAL); } tx->id = wn->id; @@ -2881,9 +2883,6 @@ wpi_tx_data(struct wpi_softc *sc, struct mbuf *m, struct ieee80211_node *ni) tx_data.ac = ac; return wpi_cmd2(sc, &tx_data); - -fail: m_freem(m); - return error; } static int @@ -2896,8 +2895,8 @@ wpi_tx_data_raw(struct wpi_softc *sc, struct mbuf *m, struct wpi_buf tx_data; struct wpi_cmd_data *tx = (struct wpi_cmd_data *)&tx_data.data; uint32_t flags; - uint8_t type; - int ac, rate, swcrypt, totlen; + uint8_t ac, type, rate; + int swcrypt, totlen; wh = mtod(m, struct ieee80211_frame *); type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; @@ -2924,10 +2923,9 @@ wpi_tx_data_raw(struct wpi_softc *sc, struct mbuf *m, if (params->ibp_flags & IEEE80211_BPF_CRYPTO) { /* Retrieve key for TX. */ k = ieee80211_crypto_encap(ni, m); - if (k == NULL) { - m_freem(m); - return ENOBUFS; - } + if (k == NULL) + return (ENOBUFS); + swcrypt = k->wk_flags & IEEE80211_KEY_SWCRYPT; /* 802.11 header may have moved. */ @@ -2991,7 +2989,7 @@ wpi_tx_data_raw(struct wpi_softc *sc, struct mbuf *m, } static __inline int -wpi_tx_ring_is_full(struct wpi_softc *sc, int ac) +wpi_tx_ring_is_full(struct wpi_softc *sc, uint16_t ac) { struct wpi_tx_ring *ring = &sc->txq[ac]; int retval; @@ -3003,21 +3001,14 @@ wpi_tx_ring_is_full(struct wpi_softc *sc, int ac) return retval; } -static __inline void -wpi_handle_tx_failure(struct ieee80211_node *ni) -{ - /* NB: m is reclaimed on tx failure */ - if_inc_counter(ni->ni_vap->iv_ifp, IFCOUNTER_OERRORS, 1); - ieee80211_free_node(ni); -} - static int wpi_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, const struct ieee80211_bpf_params *params) { struct ieee80211com *ic = ni->ni_ic; struct wpi_softc *sc = ic->ic_softc; - int ac, error = 0; + uint16_t ac; + int error = 0; DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_BEGIN, __func__); @@ -3026,7 +3017,6 @@ wpi_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, WPI_TX_LOCK(sc); if (sc->sc_running == 0 || wpi_tx_ring_is_full(sc, ac)) { - m_freem(m); error = sc->sc_running ? ENOBUFS : ENETDOWN; goto unlock; } @@ -3048,7 +3038,8 @@ wpi_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, unlock: WPI_TX_UNLOCK(sc); if (error != 0) { - wpi_handle_tx_failure(ni); + m_freem(m); + ieee80211_free_node(ni); DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END_ERR, __func__); return error; @@ -3064,7 +3055,8 @@ wpi_transmit(struct ieee80211com *ic, struct mbuf *m) { struct wpi_softc *sc = ic->ic_softc; struct ieee80211_node *ni; - int ac, error; + uint16_t ac; + int error; WPI_TX_LOCK(sc); DPRINTF(sc, WPI_DEBUG_XMIT, "%s: called\n", __func__); @@ -3085,7 +3077,9 @@ wpi_transmit(struct ieee80211com *ic, struct mbuf *m) error = 0; ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; if (wpi_tx_data(sc, m, ni) != 0) { - wpi_handle_tx_failure(ni); + if_inc_counter(ni->ni_vap->iv_ifp, IFCOUNTER_OERRORS, 1); + ieee80211_free_node(ni); + m_freem(m); } DPRINTF(sc, WPI_DEBUG_XMIT, "%s: done\n", __func__); @@ -3154,7 +3148,7 @@ wpi_parent(struct ieee80211com *ic) * Send a command to the firmware. */ static int -wpi_cmd(struct wpi_softc *sc, int code, const void *buf, size_t size, +wpi_cmd(struct wpi_softc *sc, uint8_t code, const void *buf, uint16_t size, int async) { struct wpi_tx_ring *ring = &sc->txq[WPI_CMD_QUEUE_NUM]; @@ -3163,7 +3157,8 @@ wpi_cmd(struct wpi_softc *sc, int code, const void *buf, size_t size, struct wpi_tx_cmd *cmd; struct mbuf *m; bus_addr_t paddr; - int totlen, error; + uint16_t totlen; + int error; WPI_TXQ_LOCK(sc); @@ -3182,7 +3177,7 @@ wpi_cmd(struct wpi_softc *sc, int code, const void *buf, size_t size, if (async == 0) WPI_LOCK_ASSERT(sc); - DPRINTF(sc, WPI_DEBUG_CMD, "%s: cmd %s size %zu async %d\n", + DPRINTF(sc, WPI_DEBUG_CMD, "%s: cmd %s size %u async %d\n", __func__, wpi_cmd_str(code), size, async); desc = &ring->desc[ring->cur]; @@ -3258,7 +3253,8 @@ wpi_mrr_setup(struct wpi_softc *sc) { struct ieee80211com *ic = &sc->sc_ic; struct wpi_mrr_setup mrr; - int i, error; + uint8_t i; + int error; /* CCK rates (not used with 802.11a). */ for (i = WPI_RIDX_CCK1; i <= WPI_RIDX_CCK11; i++) { @@ -3715,8 +3711,8 @@ wpi_set_pslevel(struct wpi_softc *sc, uint8_t dtim, int level, int async) { struct wpi_pmgt_cmd cmd; const struct wpi_pmgt *pmgt; - uint32_t max, skip_dtim; - uint32_t reg; + uint32_t max, reg; + uint8_t skip_dtim; int i; DPRINTF(sc, WPI_DEBUG_PWRSAVE, @@ -3951,7 +3947,7 @@ wpi_limit_dwell(struct wpi_softc *sc, uint16_t dwell_time) { struct ieee80211com *ic = &sc->sc_ic; struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); - int bintval = 0; + uint16_t bintval = 0; /* bintval is in TU (1.024mS) */ if (vap != NULL) @@ -4015,9 +4011,9 @@ wpi_scan(struct wpi_softc *sc, struct ieee80211_channel *c) struct wpi_scan_chan *chan; struct ieee80211_frame *wh; struct ieee80211_rateset *rs; - uint16_t dwell_active, dwell_passive; - uint8_t *buf, *frm; - int bgscan, bintval, buflen, error, i, nssid; + uint16_t bintval, buflen, dwell_active, dwell_passive; + uint8_t *buf, *frm, i, nssid; + int bgscan, error; DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_BEGIN, __func__); @@ -4297,6 +4293,7 @@ wpi_config_beacon(struct wpi_vap *wvp) device_printf(sc->sc_dev, "%s: could not update beacon frame, error %d", __func__, error); + m_freem(bcn->m); } /* Restore mbuf. */ @@ -4809,7 +4806,7 @@ wpi_post_alive(struct wpi_softc *sc) * the NIC internal memory (no DMA transfer). */ static int -wpi_load_bootcode(struct wpi_softc *sc, const uint8_t *ucode, int size) +wpi_load_bootcode(struct wpi_softc *sc, const uint8_t *ucode, uint32_t size) { int error, ntries; @@ -5159,7 +5156,8 @@ wpi_nic_config(struct wpi_softc *sc) static int wpi_hw_init(struct wpi_softc *sc) { - int chnl, ntries, error; + uint8_t chnl; + int ntries, error; DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_BEGIN, __func__); @@ -5274,7 +5272,8 @@ wpi_hw_init(struct wpi_softc *sc) static void wpi_hw_stop(struct wpi_softc *sc) { - int chnl, qid, ntries; + uint8_t chnl, qid; + int ntries; DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_DOING, __func__); @@ -5313,7 +5312,7 @@ wpi_hw_stop(struct wpi_softc *sc) wpi_reset_rx_ring(sc); /* Reset all TX rings. */ - for (qid = 0; qid < WPI_NTXQUEUES; qid++) + for (qid = 0; qid < WPI_DRV_NTXQUEUES; qid++) wpi_reset_tx_ring(sc, &sc->txq[qid]); if (wpi_nic_lock(sc) == 0) { diff --git a/sys/dev/wpi/if_wpireg.h b/sys/dev/wpi/if_wpireg.h index b0aa35c992d5..f36dd2512473 100644 --- a/sys/dev/wpi/if_wpireg.h +++ b/sys/dev/wpi/if_wpireg.h @@ -978,7 +978,7 @@ static const struct wpi_pmgt { uint32_t rxtimeout; uint32_t txtimeout; uint32_t intval[5]; - int skip_dtim; + uint8_t skip_dtim; } wpi_pmgt[WPI_NDTIMRANGES][WPI_NPOWERLEVELS] = { /* DTIM <= 10 */ { diff --git a/sys/dev/wpi/if_wpivar.h b/sys/dev/wpi/if_wpivar.h index 80195b59d16c..fb566b50945b 100644 --- a/sys/dev/wpi/if_wpivar.h +++ b/sys/dev/wpi/if_wpivar.h @@ -72,10 +72,10 @@ struct wpi_tx_ring { struct wpi_tx_cmd *cmd; struct wpi_tx_data data[WPI_TX_RING_COUNT]; bus_dma_tag_t data_dmat; - int qid; - int queued; - int cur; - int update; + uint8_t qid; + uint8_t cur; + int16_t queued; + int update:1; }; struct wpi_rx_data { @@ -88,7 +88,7 @@ struct wpi_rx_ring { uint32_t *desc; struct wpi_rx_data data[WPI_RX_RING_COUNT]; bus_dma_tag_t data_dmat; - int cur; + uint16_t cur; int update; }; @@ -116,8 +116,8 @@ struct wpi_buf { struct ieee80211_node *ni; struct mbuf *m; size_t size; - int code; - int ac; + uint8_t code; + uint16_t ac; }; struct wpi_vap { @@ -126,7 +126,7 @@ struct wpi_vap { struct wpi_buf wv_bcbuf; struct mtx wv_mtx; - uint32_t wv_gtk; + uint8_t wv_gtk; #define WPI_VAP_KEY(kid) (1 << kid) int (*wv_newstate)(struct ieee80211vap *, @@ -176,7 +176,7 @@ struct wpi_softc { struct wpi_dma_info shared_dma; struct wpi_shared *shared; - struct wpi_tx_ring txq[WPI_NTXQUEUES]; + struct wpi_tx_ring txq[WPI_DRV_NTXQUEUES]; struct mtx txq_mtx; struct mtx txq_state_mtx; diff --git a/sys/geom/nop/g_nop.c b/sys/geom/nop/g_nop.c index 837f3f4e3394..f36472dc6450 100644 --- a/sys/geom/nop/g_nop.c +++ b/sys/geom/nop/g_nop.c @@ -119,6 +119,24 @@ g_nop_start(struct bio *bp) sc->sc_wrotebytes += bp->bio_length; failprob = sc->sc_wfailprob; break; + case BIO_DELETE: + sc->sc_deletes++; + break; + case BIO_GETATTR: + sc->sc_getattrs++; + break; + case BIO_FLUSH: + sc->sc_flushes++; + break; + case BIO_CMD0: + sc->sc_cmd0s++; + break; + case BIO_CMD1: + sc->sc_cmd1s++; + break; + case BIO_CMD2: + sc->sc_cmd2s++; + break; } mtx_unlock(&sc->sc_lock); if (failprob > 0) { @@ -238,6 +256,12 @@ g_nop_create(struct gctl_req *req, struct g_class *mp, struct g_provider *pp, sc->sc_wfailprob = wfailprob; sc->sc_reads = 0; sc->sc_writes = 0; + sc->sc_deletes = 0; + sc->sc_getattrs = 0; + sc->sc_flushes = 0; + sc->sc_cmd0s = 0; + sc->sc_cmd1s = 0; + sc->sc_cmd2s = 0; sc->sc_readbytes = 0; sc->sc_wrotebytes = 0; mtx_init(&sc->sc_lock, "gnop lock", NULL, MTX_DEF); @@ -602,6 +626,12 @@ g_nop_ctl_reset(struct gctl_req *req, struct g_class *mp) sc = pp->geom->softc; sc->sc_reads = 0; sc->sc_writes = 0; + sc->sc_deletes = 0; + sc->sc_getattrs = 0; + sc->sc_flushes = 0; + sc->sc_cmd0s = 0; + sc->sc_cmd1s = 0; + sc->sc_cmd2s = 0; sc->sc_readbytes = 0; sc->sc_wrotebytes = 0; } @@ -659,6 +689,12 @@ g_nop_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, sbuf_printf(sb, "%s%d\n", indent, sc->sc_error); sbuf_printf(sb, "%s%ju\n", indent, sc->sc_reads); sbuf_printf(sb, "%s%ju\n", indent, sc->sc_writes); + sbuf_printf(sb, "%s%ju\n", indent, sc->sc_deletes); + sbuf_printf(sb, "%s%ju\n", indent, sc->sc_getattrs); + sbuf_printf(sb, "%s%ju\n", indent, sc->sc_flushes); + sbuf_printf(sb, "%s%ju\n", indent, sc->sc_cmd0s); + sbuf_printf(sb, "%s%ju\n", indent, sc->sc_cmd1s); + sbuf_printf(sb, "%s%ju\n", indent, sc->sc_cmd2s); sbuf_printf(sb, "%s%ju\n", indent, sc->sc_readbytes); sbuf_printf(sb, "%s%ju\n", indent, diff --git a/sys/geom/nop/g_nop.h b/sys/geom/nop/g_nop.h index b5e954ad6337..beba43e50ae5 100644 --- a/sys/geom/nop/g_nop.h +++ b/sys/geom/nop/g_nop.h @@ -65,6 +65,12 @@ struct g_nop_softc { u_int sc_wfailprob; uintmax_t sc_reads; uintmax_t sc_writes; + uintmax_t sc_deletes; + uintmax_t sc_getattrs; + uintmax_t sc_flushes; + uintmax_t sc_cmd0s; + uintmax_t sc_cmd1s; + uintmax_t sc_cmd2s; uintmax_t sc_readbytes; uintmax_t sc_wrotebytes; struct mtx sc_lock; diff --git a/sys/kern/kern_module.c b/sys/kern/kern_module.c index b7693203283a..479345e43f74 100644 --- a/sys/kern/kern_module.c +++ b/sys/kern/kern_module.c @@ -158,16 +158,12 @@ module_register(const moduledata_t *data, linker_file_t container) newmod = module_lookupbyname(data->name); if (newmod != NULL) { MOD_XUNLOCK; - printf("module_register: module %s already exists!\n", - data->name); + printf("%s: cannot register %s from %s; already loaded from %s\n", + __func__, data->name, container->filename, newmod->file->filename); return (EEXIST); } namelen = strlen(data->name) + 1; newmod = malloc(sizeof(struct module) + namelen, M_MODULE, M_WAITOK); - if (newmod == NULL) { - MOD_XUNLOCK; - return (ENOMEM); - } newmod->refs = 1; newmod->id = nextid++; newmod->name = (char *)(newmod + 1); diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c index 3d5dd11a2edb..b426f4561ef1 100644 --- a/sys/kern/sysv_shm.c +++ b/sys/kern/sysv_shm.c @@ -162,7 +162,7 @@ struct shminfo shminfo = { }; static int shm_use_phys; -static int shm_allow_removed; +static int shm_allow_removed = 1; SYSCTL_ULONG(_kern_ipc, OID_AUTO, shmmax, CTLFLAG_RWTUN, &shminfo.shmmax, 0, "Maximum shared memory segment size"); diff --git a/sys/mips/conf/AP135.hints b/sys/mips/conf/AP135.hints index 3db44d019358..ec7761e849db 100644 --- a/sys/mips/conf/AP135.hints +++ b/sys/mips/conf/AP135.hints @@ -127,6 +127,17 @@ hint.ath.0.eepromsize=16384 # # bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init mtdparts=ath-nor0:256k(u-boot),64k(u-boot-env),6336k(rootfs),1408k(uImage),8256k(mib0),64k(ART) +# The default flash layout isn't enough to fit a freebsd kernel +# now, so the layout has been shuffled around. +# +# By default it's set to: +# 256KB uboot, 64KB uboot-env, 6336KB rootfs, 1344KB kernel, 64KB cfg, 8256MB mib0, 64KB ART +# With 'bootcmd=bootm 0x9f680000' in the environment. +# +# Instead, now let's make it: +# 256KB uboot, 64KB uboot-env, 2048MB kernel, 6144MB rootfs, 7644KB mib0, 64KB cfg, 64KB ART +# .. and then you change the boot env to be: +# 'bootcmd=bootm 0x9f050000' # 256KiB u-boot hint.map.0.at="flash/spi0" @@ -142,37 +153,37 @@ hint.map.1.end=0x00050000 # 64k u-boot-env hint.map.1.name="u-boot-env" hint.map.1.readonly=1 -# 6336KiB rootfs +# 2048KiB kernel hint.map.2.at="flash/spi0" hint.map.2.start=0x00050000 -hint.map.2.end=0x00680000 # 6336k rootfs -hint.map.2.name="rootfs" +hint.map.2.end=0x00250000 # 2048k rootfs +hint.map.2.name="kernel" hint.map.2.readonly=1 -# 1344KiB uImage +# 6144KiB rootfs hint.map.3.at="flash/spi0" -hint.map.3.start=0x00680000 -hint.map.3.end=0x007d0000 # 1408k uImage, 64k off the end.. -hint.map.3.name="uImage" +hint.map.3.start=0x00250000 +hint.map.3.end=0x00850000 +hint.map.3.name="rootfs" hint.map.3.readonly=1 -# 64KiB cfg +# 7644KiB mib0 hint.map.4.at="flash/spi0" -hint.map.4.start=0x007d0000 -hint.map.4.end=0x007e0000 -hint.map.4.name="cfg" +hint.map.4.start=0x00850000 +hint.map.4.end=0x00fe0000 +hint.map.4.name="mib0" hint.map.4.readonly=0 -# 8256 KiB mib0 +# 64KiB cfg hint.map.5.at="flash/spi0" -hint.map.5.start=0x007e0000 -hint.map.5.end=0x00ff0000 # 64k mib0 -hint.map.5.name="mib0" -hint.map.5.readonly=1 +hint.map.5.start=0x00fe0000 +hint.map.5.end=0x00ff0000 +hint.map.5.name="cfg" +hint.map.5.readonly=0 # 64KiB ART hint.map.6.at="flash/spi0" -hint.map.6.start=0x007f0000 +hint.map.6.start=0x00ff0000 hint.map.6.end=0x01000000 # 64k ART hint.map.6.name="ART" hint.map.6.readonly=1 diff --git a/sys/mips/conf/TP-MR3020 b/sys/mips/conf/TP-MR3020 index f0ecb4be017a..a19f41bcb070 100644 --- a/sys/mips/conf/TP-MR3020 +++ b/sys/mips/conf/TP-MR3020 @@ -50,16 +50,6 @@ device geom_uncompress # Used for the static uboot partition map device geom_map -# Boot off of the rootfs, as defined in the geom_map setup. -# Probably, this should be a USB device as the memory available -# compressed rootfs is simply too small for FreeBSD -#options ROOTDEVNAME=\"ufs:map/rootfs.uncompress\" - -# Boot off of a uboot tftp ramdisk kernel image. Because the flash -# on this unit is so small, this is the only way to do dev work. -# For full deployment, you will *have* to use a usb storage device -# as a rootfs and use the flash to hold the kernel only. -options MD_ROOT # md device usable as a potential root device -options MD_ROOT_SIZE=10240 -#makeoptions MFS_IMAGE=/tftpboot/mfsroot-tl-mr3020.img.ulzma -options ROOTDEVNAME=\"ufs:md0.uncompress\" +# With only 4MB of flash, we are stuck using USB +# for the rootfs. +options ROOTDEVNAME=\"ufs:da0\" diff --git a/sys/mips/conf/TP-MR3020.hints b/sys/mips/conf/TP-MR3020.hints index dfabb42c14d3..e346a22ef3e0 100644 --- a/sys/mips/conf/TP-MR3020.hints +++ b/sys/mips/conf/TP-MR3020.hints @@ -34,8 +34,10 @@ hint.arge.1.fduplex=1 # Where the ART is - last 64k in the flash # 0x9fff1000 ? -hint.ath.0.eepromaddr=0x1fff0000 +hint.ath.0.eepromaddr=0x1fff1000 hint.ath.0.eepromsize=16384 + +hint.ar71xx.0.eeprom_mac_addr=0x1f01fc00 # The board 16MiB flash layout in uboot env: # diff --git a/usr.sbin/ppp/Makefile b/usr.sbin/ppp/Makefile index 6a3d8f2d1591..8bd11534a3b4 100644 --- a/usr.sbin/ppp/Makefile +++ b/usr.sbin/ppp/Makefile @@ -22,7 +22,7 @@ PPP_NO_RADIUS= PPP_NO_SUID= .endif CONFS= ppp.conf -CONFSDIR= ${ETCDIR}/ppp +CONFSDIR= ${CONFIGDIR}/ppp CONFSMODE= 600 .if ${MK_ATM} == "no"