From owner-svn-src-projects@FreeBSD.ORG Wed Jun 15 07:20:23 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 572F0106566C; Wed, 15 Jun 2011 07:20:23 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 448FE8FC15; Wed, 15 Jun 2011 07:20:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5F7KNYA070680; Wed, 15 Jun 2011 07:20:23 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5F7KM2g070646; Wed, 15 Jun 2011 07:20:22 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106150720.p5F7KM2g070646@svn.freebsd.org> From: Attilio Rao Date: Wed, 15 Jun 2011 07:20:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223106 - in projects/largeSMP: bin/ps bin/sh bin/sh/bltin contrib/gdb/gdb contrib/pf/pfctl contrib/sendmail contrib/sendmail/cf/cf contrib/sendmail/cf/feature contrib/sendmail/cf/m4 co... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 07:20:23 -0000 Author: attilio Date: Wed Jun 15 07:20:22 2011 New Revision: 223106 URL: http://svn.freebsd.org/changeset/base/223106 Log: MFC Added: projects/largeSMP/contrib/sendmail/cf/ostype/solaris11.m4 - copied unchanged from r223080, head/contrib/sendmail/cf/ostype/solaris11.m4 Modified: projects/largeSMP/bin/ps/extern.h projects/largeSMP/bin/ps/keyword.c projects/largeSMP/bin/ps/print.c projects/largeSMP/bin/ps/ps.1 projects/largeSMP/bin/sh/alias.c projects/largeSMP/bin/sh/alias.h projects/largeSMP/bin/sh/arith.h projects/largeSMP/bin/sh/bltin/bltin.h projects/largeSMP/bin/sh/cd.c projects/largeSMP/bin/sh/cd.h projects/largeSMP/bin/sh/eval.h projects/largeSMP/bin/sh/exec.h projects/largeSMP/bin/sh/expand.c projects/largeSMP/bin/sh/expand.h projects/largeSMP/bin/sh/histedit.c projects/largeSMP/bin/sh/jobs.c projects/largeSMP/bin/sh/jobs.h projects/largeSMP/bin/sh/main.c projects/largeSMP/bin/sh/main.h projects/largeSMP/bin/sh/mkbuiltins projects/largeSMP/bin/sh/myhistedit.h projects/largeSMP/bin/sh/options.c projects/largeSMP/bin/sh/options.h projects/largeSMP/bin/sh/trap.c projects/largeSMP/bin/sh/trap.h projects/largeSMP/bin/sh/var.c projects/largeSMP/bin/sh/var.h projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c projects/largeSMP/contrib/pf/pfctl/pfctl.8 projects/largeSMP/contrib/pf/pfctl/pfctl.c projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c projects/largeSMP/contrib/pf/pfctl/pfctl_parser.h projects/largeSMP/contrib/sendmail/CACerts projects/largeSMP/contrib/sendmail/FREEBSD-upgrade projects/largeSMP/contrib/sendmail/KNOWNBUGS projects/largeSMP/contrib/sendmail/LICENSE projects/largeSMP/contrib/sendmail/PGPKEYS projects/largeSMP/contrib/sendmail/RELEASE_NOTES projects/largeSMP/contrib/sendmail/cf/cf/submit.cf projects/largeSMP/contrib/sendmail/cf/feature/ldap_routing.m4 projects/largeSMP/contrib/sendmail/cf/m4/cfhead.m4 projects/largeSMP/contrib/sendmail/cf/m4/proto.m4 projects/largeSMP/contrib/sendmail/cf/m4/version.m4 projects/largeSMP/contrib/sendmail/contrib/qtool.pl projects/largeSMP/contrib/sendmail/doc/op/op.me projects/largeSMP/contrib/sendmail/include/sm/conf.h projects/largeSMP/contrib/sendmail/libmilter/docs/overview.html projects/largeSMP/contrib/sendmail/libmilter/docs/smfi_stop.html projects/largeSMP/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html projects/largeSMP/contrib/sendmail/libmilter/engine.c projects/largeSMP/contrib/sendmail/libmilter/sm_gethost.c projects/largeSMP/contrib/sendmail/libmilter/worker.c projects/largeSMP/contrib/sendmail/libsm/ldap.c projects/largeSMP/contrib/sendmail/makemap/makemap.c projects/largeSMP/contrib/sendmail/src/Makefile.m4 projects/largeSMP/contrib/sendmail/src/conf.c projects/largeSMP/contrib/sendmail/src/daemon.c projects/largeSMP/contrib/sendmail/src/deliver.c projects/largeSMP/contrib/sendmail/src/domain.c projects/largeSMP/contrib/sendmail/src/envelope.c projects/largeSMP/contrib/sendmail/src/err.c projects/largeSMP/contrib/sendmail/src/main.c projects/largeSMP/contrib/sendmail/src/map.c projects/largeSMP/contrib/sendmail/src/mci.c projects/largeSMP/contrib/sendmail/src/parseaddr.c projects/largeSMP/contrib/sendmail/src/queue.c projects/largeSMP/contrib/sendmail/src/readcf.c projects/largeSMP/contrib/sendmail/src/sendmail.8 projects/largeSMP/contrib/sendmail/src/sendmail.h projects/largeSMP/contrib/sendmail/src/sm_resolve.c projects/largeSMP/contrib/sendmail/src/srvrsmtp.c projects/largeSMP/contrib/sendmail/src/tls.c projects/largeSMP/contrib/sendmail/src/udb.c projects/largeSMP/contrib/sendmail/src/usersmtp.c projects/largeSMP/contrib/sendmail/src/version.c projects/largeSMP/etc/periodic/daily/800.scrub-zfs projects/largeSMP/etc/sendmail/freebsd.mc projects/largeSMP/etc/sendmail/freebsd.submit.mc projects/largeSMP/release/doc/en_US.ISO8859-1/relnotes/article.sgml projects/largeSMP/sbin/camcontrol/camcontrol.c projects/largeSMP/sbin/ifconfig/ifconfig.c projects/largeSMP/sbin/ipfw/ipfw.8 projects/largeSMP/sbin/ipfw/ipfw2.c projects/largeSMP/sbin/ipfw/ipfw2.h projects/largeSMP/sbin/ipfw/nat.c projects/largeSMP/share/misc/committers-ports.dot projects/largeSMP/sys/amd64/conf/GENERIC projects/largeSMP/sys/cam/ata/ata_da.c projects/largeSMP/sys/cam/cam_ccb.h projects/largeSMP/sys/cam/cam_periph.c projects/largeSMP/sys/cam/cam_periph.h projects/largeSMP/sys/cam/cam_xpt.c projects/largeSMP/sys/cam/cam_xpt.h projects/largeSMP/sys/cam/cam_xpt_internal.h projects/largeSMP/sys/cam/scsi/scsi_all.c projects/largeSMP/sys/cam/scsi/scsi_all.h projects/largeSMP/sys/cam/scsi/scsi_da.c projects/largeSMP/sys/cam/scsi/scsi_pass.c projects/largeSMP/sys/cam/scsi/scsi_xpt.c projects/largeSMP/sys/dev/ata/chipsets/ata-intel.c projects/largeSMP/sys/dev/puc/puc.c projects/largeSMP/sys/dev/puc/puc_bfe.h projects/largeSMP/sys/dev/puc/puc_pccard.c projects/largeSMP/sys/dev/puc/puc_pci.c projects/largeSMP/sys/dev/sound/pci/hda/hdac.c projects/largeSMP/sys/dev/xen/blkback/blkback.c projects/largeSMP/sys/geom/geom.h projects/largeSMP/sys/geom/geom_dev.c projects/largeSMP/sys/geom/geom_disk.c projects/largeSMP/sys/geom/geom_disk.h projects/largeSMP/sys/geom/geom_event.c projects/largeSMP/sys/geom/geom_subr.c projects/largeSMP/sys/i386/conf/GENERIC projects/largeSMP/sys/kern/kern_conf.c projects/largeSMP/sys/kern/kern_exit.c projects/largeSMP/sys/kern/subr_devstat.c projects/largeSMP/sys/kern/subr_kdb.c projects/largeSMP/sys/kern/sys_process.c projects/largeSMP/sys/net/if.h projects/largeSMP/sys/netinet/ipfw/ip_fw2.c projects/largeSMP/sys/netinet/ipfw/ip_fw_nat.c projects/largeSMP/sys/netinet/libalias/alias.h projects/largeSMP/sys/sys/conf.h projects/largeSMP/sys/sys/disk.h projects/largeSMP/sys/sys/proc.h projects/largeSMP/sys/ufs/ffs/ffs_softdep.c projects/largeSMP/usr.sbin/diskinfo/diskinfo.c Directory Properties: projects/largeSMP/ (props changed) projects/largeSMP/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/contrib/bind9/ (props changed) projects/largeSMP/contrib/binutils/ (props changed) projects/largeSMP/contrib/bzip2/ (props changed) projects/largeSMP/contrib/compiler-rt/ (props changed) projects/largeSMP/contrib/dialog/ (props changed) projects/largeSMP/contrib/ee/ (props changed) projects/largeSMP/contrib/expat/ (props changed) projects/largeSMP/contrib/file/ (props changed) projects/largeSMP/contrib/gcc/ (props changed) projects/largeSMP/contrib/gdb/ (props changed) projects/largeSMP/contrib/gdtoa/ (props changed) projects/largeSMP/contrib/gnu-sort/ (props changed) projects/largeSMP/contrib/groff/ (props changed) projects/largeSMP/contrib/less/ (props changed) projects/largeSMP/contrib/libpcap/ (props changed) projects/largeSMP/contrib/libstdc++/ (props changed) projects/largeSMP/contrib/llvm/ (props changed) projects/largeSMP/contrib/llvm/tools/clang/ (props changed) projects/largeSMP/contrib/ncurses/ (props changed) projects/largeSMP/contrib/netcat/ (props changed) projects/largeSMP/contrib/ntp/ (props changed) projects/largeSMP/contrib/one-true-awk/ (props changed) projects/largeSMP/contrib/openbsm/ (props changed) projects/largeSMP/contrib/openpam/ (props changed) projects/largeSMP/contrib/pf/ (props changed) projects/largeSMP/contrib/sendmail/ (props changed) projects/largeSMP/contrib/tcpdump/ (props changed) projects/largeSMP/contrib/tcsh/ (props changed) projects/largeSMP/contrib/top/ (props changed) projects/largeSMP/contrib/top/install-sh (props changed) projects/largeSMP/contrib/tzcode/stdtime/ (props changed) projects/largeSMP/contrib/tzcode/zic/ (props changed) projects/largeSMP/contrib/tzdata/ (props changed) projects/largeSMP/contrib/wpa/ (props changed) projects/largeSMP/contrib/xz/ (props changed) projects/largeSMP/crypto/openssh/ (props changed) projects/largeSMP/crypto/openssl/ (props changed) projects/largeSMP/gnu/lib/ (props changed) projects/largeSMP/gnu/usr.bin/binutils/ (props changed) projects/largeSMP/gnu/usr.bin/cc/cc_tools/ (props changed) projects/largeSMP/gnu/usr.bin/gdb/ (props changed) projects/largeSMP/lib/libc/ (props changed) projects/largeSMP/lib/libc/stdtime/ (props changed) projects/largeSMP/lib/libutil/ (props changed) projects/largeSMP/lib/libz/ (props changed) projects/largeSMP/sbin/ (props changed) projects/largeSMP/sbin/ipfw/ (props changed) projects/largeSMP/share/mk/bsd.arch.inc.mk (props changed) projects/largeSMP/share/zoneinfo/ (props changed) projects/largeSMP/sys/ (props changed) projects/largeSMP/sys/amd64/include/xen/ (props changed) projects/largeSMP/sys/boot/ (props changed) projects/largeSMP/sys/boot/i386/efi/ (props changed) projects/largeSMP/sys/boot/ia64/efi/ (props changed) projects/largeSMP/sys/boot/ia64/ski/ (props changed) projects/largeSMP/sys/boot/powerpc/boot1.chrp/ (props changed) projects/largeSMP/sys/boot/powerpc/ofw/ (props changed) projects/largeSMP/sys/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/sys/conf/ (props changed) projects/largeSMP/sys/contrib/dev/acpica/ (props changed) projects/largeSMP/sys/contrib/octeon-sdk/ (props changed) projects/largeSMP/sys/contrib/pf/ (props changed) projects/largeSMP/sys/contrib/x86emu/ (props changed) projects/largeSMP/usr.bin/calendar/ (props changed) projects/largeSMP/usr.bin/csup/ (props changed) projects/largeSMP/usr.bin/procstat/ (props changed) projects/largeSMP/usr.sbin/ndiscvt/ (props changed) projects/largeSMP/usr.sbin/zic/ (props changed) Modified: projects/largeSMP/bin/ps/extern.h ============================================================================== --- projects/largeSMP/bin/ps/extern.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/extern.h Wed Jun 15 07:20:22 2011 (r223106) @@ -70,6 +70,7 @@ void pmem(KINFO *, VARENT *); void pri(KINFO *, VARENT *); void printheader(void); void priorityr(KINFO *, VARENT *); +void egroupname(KINFO *, VARENT *); void rgroupname(KINFO *, VARENT *); void runame(KINFO *, VARENT *); void rvar(KINFO *, VARENT *); @@ -78,6 +79,7 @@ int s_cputime(KINFO *); int s_label(KINFO *); int s_loginclass(KINFO *); int s_logname(KINFO *); +int s_egroupname(KINFO *); int s_rgroupname(KINFO *); int s_runame(KINFO *); int s_systime(KINFO *); Modified: projects/largeSMP/bin/ps/keyword.c ============================================================================== --- projects/largeSMP/bin/ps/keyword.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/keyword.c Wed Jun 15 07:20:22 2011 (r223106) @@ -88,12 +88,19 @@ static VAR var[] = { {"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d", 0}, {"cputime", "", "time", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"egid", "", "gid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"egroup", "", "group", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"emul", "EMUL", NULL, LJUST, emulname, NULL, EMULLEN, 0, CHAR, NULL, 0}, {"etime", "ELAPSED", NULL, USER, elapsed, NULL, 12, 0, CHAR, NULL, 0}, {"etimes", "ELAPSED", NULL, USER, elapseds, NULL, 12, 0, CHAR, NULL, 0}, + {"euid", "", "uid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"f", "F", NULL, 0, kvar, NULL, 8, KOFF(ki_flag), INT, "x", 0}, {"flags", "", "f", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"gid", "GID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_groups), + UINT, UIDFMT, 0}, + {"group", "GROUP", NULL, LJUST, egroupname, s_egroupname, + USERLEN, 0, CHAR, NULL, 0}, {"ignored", "", "sigignore", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"inblk", "INBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_inblock), LONG, "ld", 0}, Modified: projects/largeSMP/bin/ps/print.c ============================================================================== --- projects/largeSMP/bin/ps/print.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/print.c Wed Jun 15 07:20:22 2011 (r223106) @@ -341,6 +341,22 @@ s_uname(KINFO *k) } void +egroupname(KINFO *k, VARENT *ve) +{ + VAR *v; + + v = ve->var; + (void)printf("%-*s", v->width, + group_from_gid(k->ki_p->ki_groups[0], 0)); +} + +int +s_egroupname(KINFO *k) +{ + return (strlen(group_from_gid(k->ki_p->ki_groups[0], 0))); +} + +void rgroupname(KINFO *k, VARENT *ve) { VAR *v; Modified: projects/largeSMP/bin/ps/ps.1 ============================================================================== --- projects/largeSMP/bin/ps/ps.1 Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/ps.1 Wed Jun 15 07:20:22 2011 (r223106) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd April 18, 2011 +.Dd June 14, 2011 .Dt PS 1 .Os .Sh NAME @@ -502,6 +502,12 @@ elapsed running time, in decimal integer .It Cm flags the process flags, in hexadecimal (alias .Cm f ) +.It Cm gid +effective group ID (alias +.Cm egid ) +.It Cm group +group name (from egid) (alias +.Cm egroup ) .It Cm inblk total blocks read (alias .Cm inblock ) @@ -629,7 +635,8 @@ process pointer .It Cm ucomm name to be used for accounting .It Cm uid -effective user ID +effective user ID (alias +.Cm euid ) .It Cm upr scheduling priority on return from system call (alias .Cm usrpri ) Modified: projects/largeSMP/bin/sh/alias.c ============================================================================== --- projects/largeSMP/bin/sh/alias.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/alias.c Wed Jun 15 07:20:22 2011 (r223106) @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "alias.h" #include "options.h" /* XXX for argptr (should remove?) */ +#include "builtins.h" #define ATABSIZE 39 Modified: projects/largeSMP/bin/sh/alias.h ============================================================================== --- projects/largeSMP/bin/sh/alias.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/alias.h Wed Jun 15 07:20:22 2011 (r223106) @@ -43,5 +43,3 @@ struct alias { }; struct alias *lookupalias(const char *, int); -int aliascmd(int, char **); -int unaliascmd(int, char **); Modified: projects/largeSMP/bin/sh/arith.h ============================================================================== --- projects/largeSMP/bin/sh/arith.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/arith.h Wed Jun 15 07:20:22 2011 (r223106) @@ -36,4 +36,3 @@ arith_t arith(const char *); void arith_lex_reset(void); -int expcmd(int, char **); Modified: projects/largeSMP/bin/sh/bltin/bltin.h ============================================================================== --- projects/largeSMP/bin/sh/bltin/bltin.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/bltin/bltin.h Wed Jun 15 07:20:22 2011 (r223106) @@ -43,6 +43,7 @@ #include "../mystring.h" #ifdef SHELL #include "../output.h" +#include "builtins.h" #define FILE struct output #undef stdout #define stdout out1 @@ -75,7 +76,4 @@ pointer stalloc(int); void error(const char *, ...) __printf0like(1, 2); pid_t getjobpgrp(char *); -int echocmd(int, char **); -int testcmd(int, char **); - extern char *commandname; Modified: projects/largeSMP/bin/sh/cd.c ============================================================================== --- projects/largeSMP/bin/sh/cd.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/cd.c Wed Jun 15 07:20:22 2011 (r223106) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "show.h" #include "cd.h" +#include "builtins.h" static int cdlogical(char *); static int cdphysical(char *); Modified: projects/largeSMP/bin/sh/cd.h ============================================================================== --- projects/largeSMP/bin/sh/cd.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/cd.h Wed Jun 15 07:20:22 2011 (r223106) @@ -30,5 +30,3 @@ */ void pwd_init(int); -int cdcmd (int, char **); -int pwdcmd(int, char **); Modified: projects/largeSMP/bin/sh/eval.h ============================================================================== --- projects/largeSMP/bin/sh/eval.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/eval.h Wed Jun 15 07:20:22 2011 (r223106) @@ -51,19 +51,10 @@ struct backcmd { /* result of evalbackc #define EV_TESTED 02 /* exit status is checked; ignore -e flag */ #define EV_BACKCMD 04 /* command executing within back quotes */ -int evalcmd(int, char **); void evalstring(char *, int); union node; /* BLETCH for ansi C */ void evaltree(union node *, int); void evalbackcmd(union node *, struct backcmd *); -int bltincmd(int, char **); -int breakcmd(int, char **); -int returncmd(int, char **); -int falsecmd(int, char **); -int truecmd(int, char **); -int execcmd(int, char **); -int timescmd(int, char **); -int commandcmd(int, char **); /* in_function returns nonzero if we are currently evaluating a function */ #define in_function() funcnest Modified: projects/largeSMP/bin/sh/exec.h ============================================================================== --- projects/largeSMP/bin/sh/exec.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/exec.h Wed Jun 15 07:20:22 2011 (r223106) @@ -66,7 +66,6 @@ extern int exerrno; /* last exec error void shellexec(char **, char **, const char *, int) __dead2; char *padvance(const char **, const char *); -int hashcmd(int, char **); void find_command(const char *, struct cmdentry *, int, const char *); int find_builtin(const char *, int *); void hashcd(void); @@ -75,5 +74,4 @@ void addcmdentry(const char *, struct cm void defun(const char *, union node *); int unsetfunc(const char *); int typecmd_impl(int, char **, int, const char *); -int typecmd(int, char **); void clearcmdentry(void); Modified: projects/largeSMP/bin/sh/expand.c ============================================================================== --- projects/largeSMP/bin/sh/expand.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/expand.c Wed Jun 15 07:20:22 2011 (r223106) @@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "arith.h" #include "show.h" +#include "builtins.h" /* * Structure specifying which parts of the string should be searched Modified: projects/largeSMP/bin/sh/expand.h ============================================================================== --- projects/largeSMP/bin/sh/expand.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/expand.h Wed Jun 15 07:20:22 2011 (r223106) @@ -63,4 +63,3 @@ void expari(int); int patmatch(const char *, const char *, int); void rmescapes(char *); int casematch(union node *, const char *); -int wordexpcmd(int, char **); Modified: projects/largeSMP/bin/sh/histedit.c ============================================================================== --- projects/largeSMP/bin/sh/histedit.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/histedit.c Wed Jun 15 07:20:22 2011 (r223106) @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "eval.h" #include "memalloc.h" +#include "builtins.h" #define MAXHISTLOOPS 4 /* max recursions through fc */ #define DEFEDITOR "ed" /* default editor *should* be $EDITOR */ Modified: projects/largeSMP/bin/sh/jobs.c ============================================================================== --- projects/largeSMP/bin/sh/jobs.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/jobs.c Wed Jun 15 07:20:22 2011 (r223106) @@ -71,6 +71,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "mystring.h" #include "var.h" +#include "builtins.h" static struct job *jobtab; /* array of jobs */ Modified: projects/largeSMP/bin/sh/jobs.h ============================================================================== --- projects/largeSMP/bin/sh/jobs.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/jobs.h Wed Jun 15 07:20:22 2011 (r223106) @@ -88,12 +88,7 @@ extern int in_dowait; /* are we in dowa extern volatile sig_atomic_t breakwaitcmd; /* break wait to process traps? */ void setjobctl(int); -int fgcmd(int, char **); -int bgcmd(int, char **); -int jobscmd(int, char **); void showjobs(int, int); -int waitcmd(int, char **); -int jobidcmd(int, char **); struct job *makejob(union node *, int); pid_t forkshell(struct job *, union node *, int); int waitforjob(struct job *, int *); Modified: projects/largeSMP/bin/sh/main.c ============================================================================== --- projects/largeSMP/bin/sh/main.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/main.c Wed Jun 15 07:20:22 2011 (r223106) @@ -72,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "exec.h" #include "cd.h" +#include "builtins.h" int rootpid; int rootshell; Modified: projects/largeSMP/bin/sh/main.h ============================================================================== --- projects/largeSMP/bin/sh/main.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/main.h Wed Jun 15 07:20:22 2011 (r223106) @@ -39,5 +39,3 @@ extern struct jmploc main_handler; /* to void readcmdfile(const char *); void cmdloop(int); -int dotcmd(int, char **); -int exitcmd(int, char **); Modified: projects/largeSMP/bin/sh/mkbuiltins ============================================================================== --- projects/largeSMP/bin/sh/mkbuiltins Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/mkbuiltins Wed Jun 15 07:20:22 2011 (r223106) @@ -58,9 +58,7 @@ cat <<\! ! awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \ print $0}' builtins.def | sed 's/-[hj]//' > $temp -awk '{ printf "int %s(int, char **);\n", $1}' $temp -echo ' -int (*const builtinfunc[])(int, char **) = {' +echo 'int (*const builtinfunc[])(int, char **) = {' awk '/^[^#]/ { printf "\t%s,\n", $1}' $temp echo '}; @@ -94,5 +92,7 @@ struct builtincmd { }; extern int (*const builtinfunc[])(int, char **); -extern const struct builtincmd builtincmd[];' +extern const struct builtincmd builtincmd[]; +' +awk '{ printf "int %s(int, char **);\n", $1}' $temp rm -f $temp Modified: projects/largeSMP/bin/sh/myhistedit.h ============================================================================== --- projects/largeSMP/bin/sh/myhistedit.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/myhistedit.h Wed Jun 15 07:20:22 2011 (r223106) @@ -39,8 +39,6 @@ extern int displayhist; void histedit(void); void sethistsize(const char *); void setterm(const char *); -int histcmd(int, char **); int not_fcnumber(const char *); int str_to_event(const char *, int); -int bindcmd(int, char **); Modified: projects/largeSMP/bin/sh/options.c ============================================================================== --- projects/largeSMP/bin/sh/options.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/options.c Wed Jun 15 07:20:22 2011 (r223106) @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include "memalloc.h" #include "error.h" #include "mystring.h" +#include "builtins.h" #ifndef NO_HISTORY #include "myhistedit.h" #endif Modified: projects/largeSMP/bin/sh/options.h ============================================================================== --- projects/largeSMP/bin/sh/options.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/options.h Wed Jun 15 07:20:22 2011 (r223106) @@ -108,8 +108,5 @@ void procargs(int, char **); void optschanged(void); void setparam(char **); void freeparam(struct shparam *); -int shiftcmd(int, char **); -int setcmd(int, char **); -int getoptscmd(int, char **); int nextopt(const char *); void getoptsreset(const char *); Modified: projects/largeSMP/bin/sh/trap.c ============================================================================== --- projects/largeSMP/bin/sh/trap.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/trap.c Wed Jun 15 07:20:22 2011 (r223106) @@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "trap.h" #include "mystring.h" +#include "builtins.h" #include "myhistedit.h" Modified: projects/largeSMP/bin/sh/trap.h ============================================================================== --- projects/largeSMP/bin/sh/trap.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/trap.h Wed Jun 15 07:20:22 2011 (r223106) @@ -37,7 +37,6 @@ extern int pendingsigs; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; -int trapcmd(int, char **); void clear_traps(void); int have_traps(void); void setsignal(int); Modified: projects/largeSMP/bin/sh/var.c ============================================================================== --- projects/largeSMP/bin/sh/var.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/var.c Wed Jun 15 07:20:22 2011 (r223106) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "mystring.h" #include "parser.h" +#include "builtins.h" #ifndef NO_HISTORY #include "myhistedit.h" #endif Modified: projects/largeSMP/bin/sh/var.h ============================================================================== --- projects/largeSMP/bin/sh/var.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/var.h Wed Jun 15 07:20:22 2011 (r223106) @@ -123,11 +123,7 @@ void updatecharset(void); void initcharset(void); char **environment(void); int showvarscmd(int, char **); -int exportcmd(int, char **); -int localcmd(int, char **); void mklocal(char *); void poplocalvars(void); -int setvarcmd(int, char **); -int unsetcmd(int, char **); int unsetvar(const char *); int setvarsafe(const char *, const char *, int); Modified: projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c ============================================================================== --- projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c Wed Jun 15 07:20:22 2011 (r223106) @@ -27,7 +27,9 @@ #include "target.h" #include "breakpoint.h" #include "value.h" +#include "gdb_string.h" #include "osabi.h" +#include "regset.h" #include "ppc-tdep.h" #include "ppcfbsd-tdep.h" @@ -80,6 +82,17 @@ ppcfbsd_supply_reg (char *regs, int regn regcache_raw_supply (current_regcache, PC_REGNUM, regs + REG_PC_OFFSET); } +static void +ppcfbsd_supply_gregset (const struct regset *regset, + struct regcache *regcache, + int regnum, void *gregs, size_t size) +{ + ppcfbsd_supply_reg (gregs, -1); +} + +static struct regset ppcfbsd_gregset = { + NULL, (void*)ppcfbsd_supply_gregset +}; void ppcfbsd_fill_reg (char *regs, int regno) @@ -144,6 +157,20 @@ ppcfbsd_supply_fpreg (char *fpregs, int fpregs + FPREG_FPSCR_OFFSET); } +static void +ppcfbsd_supply_fpregset (const struct regset *regset, + struct regcache * regcache, + int regnum, void *fpset, size_t size) +{ + ppcfbsd_supply_fpreg (fpset, -1); +} + + +static struct regset ppcfbsd_fpregset = +{ + NULL, (void*)ppcfbsd_supply_fpregset +}; + void ppcfbsd_fill_fpreg (char *fpregs, int regno) { @@ -174,69 +201,285 @@ ppcfbsd_fill_fpreg (char *fpregs, int re fpregs + FPREG_FPSCR_OFFSET); } -static void -fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) +/* Return the appropriate register set for the core section identified + by SECT_NAME and SECT_SIZE. */ + +const struct regset * +ppcfbsd_regset_from_core_section (struct gdbarch *gdbarch, + const char *sect_name, size_t sect_size) { - char *regs, *fpregs; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (strcmp (sect_name, ".reg") == 0 && sect_size >= SIZEOF_STRUCT_REG) + return &ppcfbsd_gregset; + + if (strcmp (sect_name, ".reg2") == 0 && sect_size >= SIZEOF_STRUCT_FPREG) + return &ppcfbsd_fpregset; - /* We get everything from one section. */ - if (which != 0) - return; + return NULL; +} - regs = core_reg_sect; - fpregs = core_reg_sect + SIZEOF_STRUCT_REG; - /* Integer registers. */ - ppcfbsd_supply_reg (regs, -1); +/* Macros for matching instructions. Note that, since all the + operands are masked off before they're or-ed into the instruction, + you can use -1 to make masks. */ + +#define insn_d(opcd, rts, ra, d) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((ra) & 0x1f) << 16) \ + | ((d) & 0xffff)) + +#define insn_ds(opcd, rts, ra, d, xo) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((ra) & 0x1f) << 16) \ + | ((d) & 0xfffc) \ + | ((xo) & 0x3)) + +#define insn_xfx(opcd, rts, spr, xo) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((spr) & 0x1f) << 16) \ + | (((spr) & 0x3e0) << 6) \ + | (((xo) & 0x3ff) << 1)) + +/* Read a PPC instruction from memory. PPC instructions are always + big-endian, no matter what endianness the program is running in, so + we can't use read_memory_integer or one of its friends here. */ +static unsigned int +read_insn (CORE_ADDR pc) +{ + unsigned char buf[4]; - /* Floating point registers. */ - ppcfbsd_supply_fpreg (fpregs, -1); + read_memory (pc, buf, 4); + return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; } -static void -fetch_elfcore_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) + +/* An instruction to match. */ +struct insn_pattern { - switch (which) + unsigned int mask; /* mask the insn with this... */ + unsigned int data; /* ...and see if it matches this. */ + int optional; /* If non-zero, this insn may be absent. */ +}; + +/* Return non-zero if the instructions at PC match the series + described in PATTERN, or zero otherwise. PATTERN is an array of + 'struct insn_pattern' objects, terminated by an entry whose mask is + zero. + + When the match is successful, fill INSN[i] with what PATTERN[i] + matched. If PATTERN[i] is optional, and the instruction wasn't + present, set INSN[i] to 0 (which is not a valid PPC instruction). + INSN should have as many elements as PATTERN. Note that, if + PATTERN contains optional instructions which aren't present in + memory, then INSN will have holes, so INSN[i] isn't necessarily the + i'th instruction in memory. */ +static int +insns_match_pattern (CORE_ADDR pc, + struct insn_pattern *pattern, + unsigned int *insn) +{ + int i; + + for (i = 0; pattern[i].mask; i++) { - case 0: /* Integer registers. */ - if (core_reg_size != SIZEOF_STRUCT_REG) - warning (_("Wrong size register set in core file.")); + insn[i] = read_insn (pc); + if ((insn[i] & pattern[i].mask) == pattern[i].data) + pc += 4; + else if (pattern[i].optional) + insn[i] = 0; else - ppcfbsd_supply_reg (core_reg_sect, -1); - break; + return 0; + } - case 2: /* Floating point registers. */ - if (core_reg_size != SIZEOF_STRUCT_FPREG) - warning (_("Wrong size FP register set in core file.")); - else - ppcfbsd_supply_fpreg (core_reg_sect, -1); - break; + return 1; +} - default: - /* Don't know what kind of register request this is; just ignore it. */ - break; - } + +/* Return the 'd' field of the d-form instruction INSN, properly + sign-extended. */ +static CORE_ADDR +insn_d_field (unsigned int insn) +{ + return ((((CORE_ADDR) insn & 0xffff) ^ 0x8000) - 0x8000); } -static struct core_fns ppcfbsd_core_fns = + +/* Return the 'ds' field of the ds-form instruction INSN, with the two + zero bits concatenated at the right, and properly + sign-extended. */ +static CORE_ADDR +insn_ds_field (unsigned int insn) { - bfd_target_unknown_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL /* next */ -}; + return ((((CORE_ADDR) insn & 0xfffc) ^ 0x8000) - 0x8000); +} + -static struct core_fns ppcfbsd_elfcore_fns = +/* If DESC is the address of a 64-bit PowerPC FreeBSD function + descriptor, return the descriptor's entry point. */ +static CORE_ADDR +ppc64_desc_entry_point (CORE_ADDR desc) { - bfd_target_elf_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_elfcore_registers, /* core_read_registers */ - NULL /* next */ -}; + /* The first word of the descriptor is the entry point. */ + return (CORE_ADDR) read_memory_unsigned_integer (desc, 8); +} + + +/* Pattern for the standard linkage function. These are built by + build_plt_stub in elf64-ppc.c, whose GLINK argument is always + zero. */ +static struct insn_pattern ppc64_standard_linkage[] = + { + /* addis r12, r2, */ + { insn_d (-1, -1, -1, 0), insn_d (15, 12, 2, 0), 0 }, + + /* std r2, 40(r1) */ + { -1, insn_ds (62, 2, 1, 40, 0), 0 }, + + /* ld r11, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 }, + + /* addis r12, r12, 1 */ + { insn_d (-1, -1, -1, -1), insn_d (15, 12, 2, 1), 1 }, + + /* ld r2, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 2, 12, 0, 0), 0 }, + + /* addis r12, r12, 1 */ + { insn_d (-1, -1, -1, -1), insn_d (15, 12, 2, 1), 1 }, + + /* mtctr r11 */ + { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 11, 9, 467), + 0 }, + + /* ld r11, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 }, + + /* bctr */ + { -1, 0x4e800420, 0 }, + + { 0, 0, 0 } + }; +#define PPC64_STANDARD_LINKAGE_LEN \ + (sizeof (ppc64_standard_linkage) / sizeof (ppc64_standard_linkage[0])) + +/* When the dynamic linker is doing lazy symbol resolution, the first + call to a function in another object will go like this: + + - The user's function calls the linkage function: + + 100007c4: 4b ff fc d5 bl 10000498 + 100007c8: e8 41 00 28 ld r2,40(r1) + + - The linkage function loads the entry point (and other stuff) from + the function descriptor in the PLT, and jumps to it: + + 10000498: 3d 82 00 00 addis r12,r2,0 + 1000049c: f8 41 00 28 std r2,40(r1) + 100004a0: e9 6c 80 98 ld r11,-32616(r12) + 100004a4: e8 4c 80 a0 ld r2,-32608(r12) + 100004a8: 7d 69 03 a6 mtctr r11 + 100004ac: e9 6c 80 a8 ld r11,-32600(r12) + 100004b0: 4e 80 04 20 bctr + + - But since this is the first time that PLT entry has been used, it + sends control to its glink entry. That loads the number of the + PLT entry and jumps to the common glink0 code: + + 10000c98: 38 00 00 00 li r0,0 + 10000c9c: 4b ff ff dc b 10000c78 + + - The common glink0 code then transfers control to the dynamic + linker's fixup code: + + 10000c78: e8 41 00 28 ld r2,40(r1) + 10000c7c: 3d 82 00 00 addis r12,r2,0 + 10000c80: e9 6c 80 80 ld r11,-32640(r12) + 10000c84: e8 4c 80 88 ld r2,-32632(r12) + 10000c88: 7d 69 03 a6 mtctr r11 + 10000c8c: e9 6c 80 90 ld r11,-32624(r12) + 10000c90: 4e 80 04 20 bctr + + Eventually, this code will figure out how to skip all of this, + including the dynamic linker. At the moment, we just get through + the linkage function. */ + +/* If the current thread is about to execute a series of instructions + at PC matching the ppc64_standard_linkage pattern, and INSN is the result + from that pattern match, return the code address to which the + standard linkage function will send them. (This doesn't deal with + dynamic linker lazy symbol resolution stubs.) */ +static CORE_ADDR +ppc64_standard_linkage_target (CORE_ADDR pc, unsigned int *insn) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + + /* The address of the function descriptor this linkage function + references. */ + CORE_ADDR desc + = ((CORE_ADDR) read_register (tdep->ppc_gp0_regnum + 2) + + (insn_d_field (insn[0]) << 16) + + insn_ds_field (insn[2])); + + /* The first word of the descriptor is the entry point. Return that. */ + return ppc64_desc_entry_point (desc); +} + + +/* Given that we've begun executing a call trampoline at PC, return + the entry point of the function the trampoline will go to. */ +static CORE_ADDR +ppc64_skip_trampoline_code (CORE_ADDR pc) +{ + unsigned int ppc64_standard_linkage_insn[PPC64_STANDARD_LINKAGE_LEN]; + + if (insns_match_pattern (pc, ppc64_standard_linkage, + ppc64_standard_linkage_insn)) + return ppc64_standard_linkage_target (pc, ppc64_standard_linkage_insn); + else + return 0; +} + + +/* Support for CONVERT_FROM_FUNC_PTR_ADDR (ARCH, ADDR, TARG) on PPC64 + GNU/Linux and FreeBSD. + + Usually a function pointer's representation is simply the address + of the function. On GNU/Linux on the 64-bit PowerPC however, a + function pointer is represented by a pointer to a TOC entry. This + TOC entry contains three words, the first word is the address of + the function, the second word is the TOC pointer (r2), and the + third word is the static chain value. Throughout GDB it is + currently assumed that a function pointer contains the address of + the function, which is not easy to fix. In addition, the + conversion of a function address to a function pointer would + require allocation of a TOC entry in the inferior's memory space, + with all its drawbacks. To be able to call C++ virtual methods in + the inferior (which are called via function pointers), + find_function_addr uses this function to get the function address + from a function pointer. */ + +/* If ADDR points at what is clearly a function descriptor, transform + it into the address of the corresponding function. Be + conservative, otherwize GDB will do the transformation on any + random addresses such as occures when there is no symbol table. */ + +static CORE_ADDR +ppc64_fbsd_convert_from_func_ptr_addr (struct gdbarch *gdbarch, + CORE_ADDR addr, + struct target_ops *targ) +{ + struct section_table *s = target_section_by_addr (targ, addr); + + /* Check if ADDR points to a function descriptor. */ + if (s && strcmp (s->the_bfd_section->name, ".opd") == 0) + return get_target_memory_unsigned (targ, addr, 8); + + return addr; +} static int ppcfbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) @@ -270,27 +513,42 @@ static void ppcfbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + /* FreeBSD doesn't support the 128-bit `long double' from the psABI. */ + set_gdbarch_long_double_bit (gdbarch, 64); + set_gdbarch_pc_in_sigtramp (gdbarch, ppcfbsd_pc_in_sigtramp); - /* For NetBSD, this is an on again, off again thing. Some systems - do use the broken struct convention, and some don't. */ - set_gdbarch_return_value (gdbarch, ppcfbsd_return_value); -#ifdef __powerpc64__ - set_solib_svr4_fetch_link_map_offsets (gdbarch, - svr4_lp64_fetch_link_map_offsets); -#else - set_solib_svr4_fetch_link_map_offsets (gdbarch, - svr4_ilp32_fetch_link_map_offsets); -#endif + + if (tdep->wordsize == 4) + { + set_gdbarch_return_value (gdbarch, ppcfbsd_return_value); + set_solib_svr4_fetch_link_map_offsets (gdbarch, + svr4_ilp32_fetch_link_map_offsets); + } + + if (tdep->wordsize == 8) + { + set_gdbarch_convert_from_func_ptr_addr + (gdbarch, ppc64_fbsd_convert_from_func_ptr_addr); + + set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code); + + set_solib_svr4_fetch_link_map_offsets (gdbarch, + svr4_lp64_fetch_link_map_offsets); + } + + set_gdbarch_regset_from_core_section (gdbarch, + ppcfbsd_regset_from_core_section); } void _initialize_ppcfbsd_tdep (void) { + gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc, + GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); + gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc64, + GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); - gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_FREEBSD_ELF, - ppcfbsd_init_abi); - - add_core_fns (&ppcfbsd_core_fns); - add_core_fns (&ppcfbsd_elfcore_fns); } Modified: projects/largeSMP/contrib/pf/pfctl/pfctl.8 ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl.8 Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl.8 Wed Jun 15 07:20:22 2011 (r223106) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2002 +.Dd June 13, 2011 .Dt PFCTL 8 .Os .Sh NAME @@ -35,7 +35,7 @@ .Sh SYNOPSIS .Nm pfctl .Bk -words -.Op Fl AdeghmNnOqRrvz +.Op Fl AdeghmNnOPqRrvz .Op Fl a Ar anchor .Oo Fl D Ar macro Ns = .Ar value Oc @@ -350,6 +350,9 @@ without any options will enable optimizations, and a second .Fl o will enable profiling. +.It Fl P +Do not perform service name lookup for port specific rules, +instead display the ports numerically. .It Fl p Ar device Use the device file .Ar device @@ -670,6 +673,7 @@ Passive operating system fingerprint dat .Xr pf.conf 5 , .Xr pf.os 5 , .Xr rc.conf 5 , +.Xr services 5 , .Xr sysctl.conf 5 , .Xr authpf 8 , .Xr ftp-proxy 8 , Modified: projects/largeSMP/contrib/pf/pfctl/pfctl.c ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl.c Wed Jun 15 07:20:22 2011 (r223106) @@ -235,7 +235,7 @@ usage(void) { extern char *__progname; - fprintf(stderr, "usage: %s [-AdeghmNnOqRrvz] ", __progname); + fprintf(stderr, "usage: %s [-AdeghmNnOPqRrvz] ", __progname); fprintf(stderr, "[-a anchor] [-D macro=value] [-F modifier]\n"); fprintf(stderr, "\t[-f file] [-i interface] [-K host | network] "); fprintf(stderr, "[-k host | network ]\n"); @@ -770,6 +770,7 @@ pfctl_show_rules(int dev, char *path, in struct pfioc_rule pr; u_int32_t nr, mnr, header = 0; int rule_numbers = opts & (PF_OPT_VERBOSE2 | PF_OPT_DEBUG); + int numeric = opts & PF_OPT_NUMERIC; int len = strlen(path); int brace; char *p; @@ -834,7 +835,7 @@ pfctl_show_rules(int dev, char *path, in case PFCTL_SHOW_RULES: if (pr.rule.label[0] && (opts & PF_OPT_SHOWALL)) labels = 1; - print_rule(&pr.rule, pr.anchor_call, rule_numbers); + print_rule(&pr.rule, pr.anchor_call, rule_numbers, numeric); printf("\n"); pfctl_print_rule_counters(&pr.rule, opts); break; @@ -894,7 +895,7 @@ pfctl_show_rules(int dev, char *path, in } else p = &pr.anchor_call[0]; - print_rule(&pr.rule, p, rule_numbers); + print_rule(&pr.rule, p, rule_numbers, numeric); if (brace) printf(" {\n"); else @@ -951,7 +952,7 @@ pfctl_show_nat(int dev, int opts, char * dotitle = 0; } print_rule(&pr.rule, pr.anchor_call, - opts & PF_OPT_VERBOSE2); + opts & PF_OPT_VERBOSE2, opts & PF_OPT_NUMERIC); printf("\n"); pfctl_print_rule_counters(&pr.rule, opts); pfctl_clear_pool(&pr.rule.rpool); @@ -1318,7 +1319,8 @@ pfctl_load_rule(struct pfctl *pf, char * if (pf->opts & PF_OPT_VERBOSE) { INDENT(depth, !(pf->opts & PF_OPT_VERBOSE2)); print_rule(r, r->anchor ? r->anchor->name : "", - pf->opts & PF_OPT_VERBOSE2); + pf->opts & PF_OPT_VERBOSE2, + pf->opts & PF_OPT_NUMERIC); } path[len] = '\0'; pfctl_clear_pool(&r->rpool); @@ -1978,7 +1980,7 @@ main(int argc, char *argv[]) usage(); while ((ch = getopt(argc, argv, - "a:AdD:eqf:F:ghi:k:K:mnNOo::p:rRs:t:T:vx:z")) != -1) { + "a:AdD:eqf:F:ghi:k:K:mnNOo::Pp:rRs:t:T:vx:z")) != -1) { switch (ch) { case 'a': anchoropt = optarg; @@ -2080,6 +2082,9 @@ main(int argc, char *argv[]) case 'p': pf_device = optarg; break; + case 'P': + opts |= PF_OPT_NUMERIC; + break; case 's': showopt = pfctl_lookup_option(optarg, showopt_list); if (showopt == NULL) { Modified: projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c Wed Jun 15 07:20:22 2011 (r223106) @@ -407,7 +407,7 @@ optimize_superblock(struct pfctl *pf, st TAILQ_FOREACH(por, &block->sb_rules, por_entry) { printf(" "); print_rule(&por->por_rule, por->por_rule.anchor ? - por->por_rule.anchor->name : "", 1); + por->por_rule.anchor->name : "", 1, 0); } #endif /* OPT_DEBUG */ Modified: projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c Wed Jun 15 07:20:22 2011 (r223106) @@ -64,11 +64,11 @@ __FBSDID("$FreeBSD$"); #include "pfctl.h" void print_op (u_int8_t, const char *, const char *); -void print_port (u_int8_t, u_int16_t, u_int16_t, const char *); +void print_port (u_int8_t, u_int16_t, u_int16_t, const char *, int); void print_ugid (u_int8_t, unsigned, unsigned, const char *, unsigned); void print_flags (u_int8_t); void print_fromto(struct pf_rule_addr *, pf_osfp_t, - struct pf_rule_addr *, u_int8_t, u_int8_t, int); + struct pf_rule_addr *, u_int8_t, u_int8_t, int, int); int ifa_skip_if(const char *filter, struct node_host *p); struct node_host *ifa_grouplookup(const char *, int); @@ -320,12 +320,15 @@ print_op(u_int8_t op, const char *a1, co } void -print_port(u_int8_t op, u_int16_t p1, u_int16_t p2, const char *proto) +print_port(u_int8_t op, u_int16_t p1, u_int16_t p2, const char *proto, int numeric) { char a1[6], a2[6]; struct servent *s; - s = getservbyport(p1, proto); + if (!numeric) + s = getservbyport(p1, proto); + else + s = NULL; p1 = ntohs(p1); p2 = ntohs(p2); snprintf(a1, sizeof(a1), "%u", p1); @@ -363,7 +366,7 @@ print_flags(u_int8_t f) void print_fromto(struct pf_rule_addr *src, pf_osfp_t osfp, struct pf_rule_addr *dst, - sa_family_t af, u_int8_t proto, int verbose) + sa_family_t af, u_int8_t proto, int verbose, int numeric) { char buf[PF_OSFP_LEN*3]; if (src->addr.type == PF_ADDR_ADDRMASK && @@ -384,7 +387,8 @@ print_fromto(struct pf_rule_addr *src, p if (src->port_op) print_port(src->port_op, src->port[0], src->port[1], - proto == IPPROTO_TCP ? "tcp" : "udp"); + proto == IPPROTO_TCP ? "tcp" : "udp", + numeric); if (osfp != PF_OSFP_ANY) printf(" os \"%s\"", pfctl_lookup_fingerprint(osfp, buf, sizeof(buf))); @@ -396,7 +400,8 @@ print_fromto(struct pf_rule_addr *src, p if (dst->port_op) print_port(dst->port_op, dst->port[0], dst->port[1], - proto == IPPROTO_TCP ? "tcp" : "udp"); + proto == IPPROTO_TCP ? "tcp" : "udp", + numeric); } } @@ -673,7 +678,7 @@ print_src_node(struct pf_src_node *sn, i } void -print_rule(struct pf_rule *r, const char *anchor_call, int verbose) +print_rule(struct pf_rule *r, const char *anchor_call, int verbose, int numeric) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***