PERFORCE change 65728 for review

Sam Leffler sam at FreeBSD.org
Tue Nov 23 20:54:58 GMT 2004


http://perforce.freebsd.org/chv.cgi?CH=65728

Change 65728 by sam at sam_ebb on 2004/11/23 20:54:22

	o replace dual command function pointers with a single pointer
	  wrapped in an anonymous union
	o add convenience defines for declaring callback functions and
	  for initializing command structures s.t. the correct arm of the
	  union is used
	
	should be no functional changes

Affected files ...

.. //depot/projects/wifi/sbin/ifconfig/af_atalk.c#2 edit
.. //depot/projects/wifi/sbin/ifconfig/af_inet6.c#3 edit
.. //depot/projects/wifi/sbin/ifconfig/ifclone.c#3 edit
.. //depot/projects/wifi/sbin/ifconfig/ifconfig.c#4 edit
.. //depot/projects/wifi/sbin/ifconfig/ifconfig.h#4 edit
.. //depot/projects/wifi/sbin/ifconfig/ifmac.c#3 edit
.. //depot/projects/wifi/sbin/ifconfig/ifmedia.c#3 edit
.. //depot/projects/wifi/sbin/ifconfig/ifvlan.c#3 edit

Differences ...

==== //depot/projects/wifi/sbin/ifconfig/af_atalk.c#2 (text+ko) ====

@@ -155,8 +155,8 @@
 }
 
 static struct cmd atalk_cmds[] = {
-	{ "range",	NEXTARG,	setatrange },
-	{ "phase",	NEXTARG,	setatphase },
+	DEF_CMD_ARG("range",	setatrange),
+	DEF_CMD_ARG("phase",	setatphase),
 };
 
 static struct afswtch af_atalk = {

==== //depot/projects/wifi/sbin/ifconfig/af_inet6.c#3 (text+ko) ====

@@ -498,17 +498,17 @@
 }
 
 static struct cmd inet6_cmds[] = {
-	{ "prefixlen",	NEXTARG,	setifprefixlen },
-	{ "anycast",	IN6_IFF_ANYCAST, setip6flags },
-	{ "tentative",	IN6_IFF_TENTATIVE, setip6flags },
-	{ "-tentative",	-IN6_IFF_TENTATIVE, setip6flags },
-	{ "deprecated",	IN6_IFF_DEPRECATED, setip6flags },
-	{ "-deprecated", -IN6_IFF_DEPRECATED, setip6flags },
-	{ "autoconf",	IN6_IFF_AUTOCONF, setip6flags },
-	{ "-autoconf",	-IN6_IFF_AUTOCONF, setip6flags },
-	{ "pltime",     NEXTARG,        setip6pltime },
-	{ "vltime",     NEXTARG,        setip6vltime },
-	{ "eui64",	0,		setip6eui64 },
+	DEF_CMD_ARG("prefixlen",			setifprefixlen),
+	DEF_CMD("anycast",	IN6_IFF_ANYCAST,	setip6flags),
+	DEF_CMD("tentative",	IN6_IFF_TENTATIVE,	setip6flags),
+	DEF_CMD("-tentative",	-IN6_IFF_TENTATIVE,	setip6flags),
+	DEF_CMD("deprecated",	IN6_IFF_DEPRECATED,	setip6flags),
+	DEF_CMD("-deprecated", -IN6_IFF_DEPRECATED,	setip6flags),
+	DEF_CMD("autoconf",	IN6_IFF_AUTOCONF,	setip6flags),
+	DEF_CMD("-autoconf",	-IN6_IFF_AUTOCONF,	setip6flags),
+	DEF_CMD_ARG("pltime",        			setip6pltime),
+	DEF_CMD_ARG("vltime",        			setip6vltime),
+	DEF_CMD("eui64",	0,			setip6eui64),
 };
 
 static struct afswtch af_inet6 = {

==== //depot/projects/wifi/sbin/ifconfig/ifclone.c#3 (text+ko) ====

@@ -130,8 +130,8 @@
 }
 
 static struct cmd clone_cmds[] = {
-	{ "destroy",	0,	clone_destroy },
-	{ "unplumb",	0,	clone_destroy },
+	DEF_CMD("destroy",	0,	clone_destroy),
+	DEF_CMD("unplumb",	0,	clone_destroy),
 };
 
 static void

==== //depot/projects/wifi/sbin/ifconfig/ifconfig.c#4 (text+ko) ====

@@ -448,10 +448,11 @@
 
 /* specially-handled comamnds */
 static void setifaddr(const char *, int, int, const struct afswtch *);
-static const struct cmd setifaddr_cmd = { "ifaddr", 0, setifaddr };
+static const struct cmd setifaddr_cmd = DEF_CMD("ifaddr", 0, setifaddr);
 
 static void setifdstaddr(const char *, int, int, const struct afswtch *);
-static const struct cmd setifdstaddr_cmd = { "ifdstaddr", 0, setifdstaddr };
+static const struct cmd setifdstaddr_cmd =
+	DEF_CMD("ifdstaddr", 0, setifdstaddr);
 
 static int
 ifconfig(int argc, char *const *argv, const struct afswtch *afp)
@@ -951,53 +952,53 @@
 }
 
 static struct cmd basic_cmds[] = {
-	{ "up",		IFF_UP,		setifflags } ,
-	{ "down",	-IFF_UP,	setifflags },
-	{ "arp",	-IFF_NOARP,	setifflags },
-	{ "-arp",	IFF_NOARP,	setifflags },
-	{ "debug",	IFF_DEBUG,	setifflags },
-	{ "-debug",	-IFF_DEBUG,	setifflags },
-	{ "promisc",	IFF_PPROMISC,	setifflags },
-	{ "-promisc",	-IFF_PPROMISC,	setifflags },
-	{ "add",	IFF_UP,		notealias },
-	{ "alias",	IFF_UP,		notealias },
-	{ "-alias",	-IFF_UP,	notealias },
-	{ "delete",	-IFF_UP,	notealias },
-	{ "remove",	-IFF_UP,	notealias },
+	DEF_CMD("up",		IFF_UP,		setifflags),
+	DEF_CMD("down",		-IFF_UP,	setifflags),
+	DEF_CMD("arp",		-IFF_NOARP,	setifflags),
+	DEF_CMD("-arp",		IFF_NOARP,	setifflags),
+	DEF_CMD("debug",	IFF_DEBUG,	setifflags),
+	DEF_CMD("-debug",	-IFF_DEBUG,	setifflags),
+	DEF_CMD("promisc",	IFF_PPROMISC,	setifflags),
+	DEF_CMD("-promisc",	-IFF_PPROMISC,	setifflags),
+	DEF_CMD("add",		IFF_UP,		notealias),
+	DEF_CMD("alias",	IFF_UP,		notealias),
+	DEF_CMD("-alias",	-IFF_UP,	notealias),
+	DEF_CMD("delete",	-IFF_UP,	notealias),
+	DEF_CMD("remove",	-IFF_UP,	notealias),
 #ifdef notdef
 #define	EN_SWABIPS	0x1000
-	{ "swabips",	EN_SWABIPS,	setifflags },
-	{ "-swabips",	-EN_SWABIPS,	setifflags },
+	DEF_CMD("swabips",	EN_SWABIPS,	setifflags),
+	DEF_CMD("-swabips",	-EN_SWABIPS,	setifflags),
 #endif
-	{ "netmask",	NEXTARG,	setifnetmask },
-	{ "metric",	NEXTARG,	setifmetric },
-	{ "broadcast",	NEXTARG,	setifbroadaddr },
-	{ "ipdst",	NEXTARG,	setifipdst },
-	{ "tunnel",	NEXTARG2,	NULL,	settunnel },
-	{ "deletetunnel", 0,		deletetunnel },
-	{ "link0",	IFF_LINK0,	setifflags },
-	{ "-link0",	-IFF_LINK0,	setifflags },
-	{ "link1",	IFF_LINK1,	setifflags },
-	{ "-link1",	-IFF_LINK1,	setifflags },
-	{ "link2",	IFF_LINK2,	setifflags },
-	{ "-link2",	-IFF_LINK2,	setifflags },
-	{ "monitor",	IFF_MONITOR,	setifflags },
-	{ "-monitor",	-IFF_MONITOR,	setifflags },
-	{ "staticarp",	IFF_STATICARP,	setifflags },
-	{ "-staticarp",	-IFF_STATICARP,	setifflags },
-	{ "rxcsum",	IFCAP_RXCSUM,	setifcap },
-	{ "-rxcsum",	-IFCAP_RXCSUM,	setifcap },
-	{ "txcsum",	IFCAP_TXCSUM,	setifcap },
-	{ "-txcsum",	-IFCAP_TXCSUM,	setifcap },
-	{ "netcons",	IFCAP_NETCONS,	setifcap },
-	{ "-netcons",	-IFCAP_NETCONS,	setifcap },
-	{ "polling",	IFCAP_POLLING,	setifcap },
-	{ "-polling",	-IFCAP_POLLING,	setifcap },
-	{ "normal",	-IFF_LINK0,	setifflags },
-	{ "compress",	IFF_LINK0,	setifflags },
-	{ "noicmp",	IFF_LINK1,	setifflags },
-	{ "mtu",	NEXTARG,	setifmtu },
-	{ "name",	NEXTARG,	setifname },
+	DEF_CMD_ARG("netmask",			setifnetmask),
+	DEF_CMD_ARG("metric",			setifmetric),
+	DEF_CMD_ARG("broadcast",		setifbroadaddr),
+	DEF_CMD_ARG("ipdst",			setifipdst),
+	DEF_CMD_ARG2("tunnel",			settunnel),
+	DEF_CMD("deletetunnel", 0,		deletetunnel),
+	DEF_CMD("link0",	IFF_LINK0,	setifflags),
+	DEF_CMD("-link0",	-IFF_LINK0,	setifflags),
+	DEF_CMD("link1",	IFF_LINK1,	setifflags),
+	DEF_CMD("-link1",	-IFF_LINK1,	setifflags),
+	DEF_CMD("link2",	IFF_LINK2,	setifflags),
+	DEF_CMD("-link2",	-IFF_LINK2,	setifflags),
+	DEF_CMD("monitor",	IFF_MONITOR,	setifflags),
+	DEF_CMD("-monitor",	-IFF_MONITOR,	setifflags),
+	DEF_CMD("staticarp",	IFF_STATICARP,	setifflags),
+	DEF_CMD("-staticarp",	-IFF_STATICARP,	setifflags),
+	DEF_CMD("rxcsum",	IFCAP_RXCSUM,	setifcap),
+	DEF_CMD("-rxcsum",	-IFCAP_RXCSUM,	setifcap),
+	DEF_CMD("txcsum",	IFCAP_TXCSUM,	setifcap),
+	DEF_CMD("-txcsum",	-IFCAP_TXCSUM,	setifcap),
+	DEF_CMD("netcons",	IFCAP_NETCONS,	setifcap),
+	DEF_CMD("-netcons",	-IFCAP_NETCONS,	setifcap),
+	DEF_CMD("polling",	IFCAP_POLLING,	setifcap),
+	DEF_CMD("-polling",	-IFCAP_POLLING,	setifcap),
+	DEF_CMD("normal",	-IFF_LINK0,	setifflags),
+	DEF_CMD("compress",	IFF_LINK0,	setifflags),
+	DEF_CMD("noicmp",	IFF_LINK1,	setifflags),
+	DEF_CMD_ARG("mtu",			setifmtu),
+	DEF_CMD_ARG("name",			setifname),
 };
 
 static __constructor void

==== //depot/projects/wifi/sbin/ifconfig/ifconfig.h#4 (text+ko) ====

@@ -40,7 +40,7 @@
 struct cmd;
 
 typedef	void c_func(const char *cmd, int arg, int s, const struct afswtch *afp);
-typedef	void c_func2(const char *arg, const char *arg2, int s, const struct afswtch *afp);
+typedef	void c_func2(const char *arg1, const char *arg2, int s, const struct afswtch *afp);
 
 struct cmd {
 	const char *c_name;
@@ -48,12 +48,27 @@
 #define	NEXTARG		0xffffff	/* has following arg */
 #define	NEXTARG2	0xfffffe	/* has 2 following args */
 #define	OPTARG		0xfffffd	/* has optional following arg */
-	c_func	*c_func;
-	c_func2	*c_func2;
+	union {
+		c_func	*c_func;
+		c_func2	*c_func2;
+	};
 	struct cmd *c_next;
 };
 void	cmd_register(struct cmd *);
 
+/*
+ * Macros for declaring command functions and initializing entries.
+ */
+#define	DECL_CMD_FUNC(name, cmd, arg) \
+	void name(const char *cmd, int arg, int s, const struct afswtch *afp)
+#define	DECL_CMD_FUNC2(name, arg1, arg2) \
+	void name(const char *arg1, const char *arg2, int s, const struct afswtch *afp)
+
+#define	DEF_CMD(name, param, func)	{ name, param, { .c_func = func } }
+#define	DEF_CMD_ARG(name, func)		{ name, NEXTARG, { .c_func = func } }
+#define	DEF_CMD_OPTARG(name, func)	{ name, OPTARG, { .c_func = func } }
+#define	DEF_CMD_ARG2(name, func)	{ name, NEXTARG2, { .c_func2 = func } }
+
 struct rt_addrinfo;
 struct addrinfo;
 

==== //depot/projects/wifi/sbin/ifconfig/ifmac.c#3 (text+ko) ====

@@ -100,7 +100,7 @@
 }
 
 static struct cmd mac_cmds[] = {
-	{ "maclabel",	NEXTARG, setifmaclabel },
+	DEF_CMD_ARG("maclabel",	setifmaclabel),
 };
 static struct afswtch af_mac = {
 	.af_name	= "maclabel",

==== //depot/projects/wifi/sbin/ifconfig/ifmedia.c#3 (text+ko) ====

@@ -779,10 +779,10 @@
  **********************************************************************/
 
 static struct cmd media_cmds[] = {
-	{ "media",	NEXTARG, setmedia },
-	{ "mode",	NEXTARG, setmediamode },
-	{ "mediaopt",	NEXTARG, setmediaopt },
-	{ "-mediaopt",	NEXTARG, unsetmediaopt },
+	DEF_CMD_ARG("media",	setmedia),
+	DEF_CMD_ARG("mode",	setmediamode),
+	DEF_CMD_ARG("mediaopt",	setmediaopt),
+	DEF_CMD_ARG("-mediaopt",unsetmediaopt),
 };
 static struct afswtch af_media = {
 	.af_name	= "media",

==== //depot/projects/wifi/sbin/ifconfig/ifvlan.c#3 (text+ko) ====

@@ -146,13 +146,13 @@
 }
 
 static struct cmd vlan_cmds[] = {
-	{ "vlan",	NEXTARG,	setvlantag },
-	{ "vlandev",	NEXTARG,	setvlandev },
-	{ "-vlandev",	NEXTARG,	unsetvlandev },
-	{ "vlanmtu",	IFCAP_VLAN_MTU,		setifcap },
-	{ "-vlanmtu",	-IFCAP_VLAN_MTU,	setifcap },
-	{ "vlanhwtag",	IFCAP_VLAN_HWTAGGING,	setifcap },
-	{ "-vlanhwtag",	-IFCAP_VLAN_HWTAGGING,	setifcap },
+	DEF_CMD_ARG("vlan",				setvlantag),
+	DEF_CMD_ARG("vlandev",				setvlandev),
+	DEF_CMD_ARG("-vlandev",				unsetvlandev),
+	DEF_CMD("vlanmtu",	IFCAP_VLAN_MTU,		setifcap),
+	DEF_CMD("-vlanmtu",	-IFCAP_VLAN_MTU,	setifcap),
+	DEF_CMD("vlanhwtag",	IFCAP_VLAN_HWTAGGING,	setifcap),
+	DEF_CMD("-vlanhwtag",	-IFCAP_VLAN_HWTAGGING,	setifcap),
 };
 static struct afswtch af_vlan = {
 	.af_name	= "vlan",


More information about the p4-projects mailing list