this makes it harder to mess up the assignment of a protocol to the
right slot in the CTL_IPPROTO_NAMES initialiser. it also shrinks the
code a lot, and i think it makes what the array index means a lot more
explicit.

this gets used in sysctl(8), which still works as expected after
this change. we use designators for init in other places, so i don't
see this one as being a problem, even on older compilers.

ok?

Index: in.h
===================================================================
RCS file: /cvs/src/sys/netinet/in.h,v
retrieving revision 1.137
diff -u -p -r1.137 in.h
--- in.h        4 Nov 2019 23:52:28 -0000       1.137
+++ in.h        5 Nov 2019 01:16:56 -0000
@@ -386,265 +386,23 @@ struct ip_mreq {
 #define        IPPROTO_MAXID   (IPPROTO_DIVERT + 1)    /* don't list to 
IPPROTO_MAX */
 
 #define        CTL_IPPROTO_NAMES { \
-       { "ip", CTLTYPE_NODE }, \
-       { "icmp", CTLTYPE_NODE }, \
-       { "igmp", CTLTYPE_NODE }, \
-       { "ggp", CTLTYPE_NODE }, \
-       { "ipip", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { "tcp", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { "egp", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "pup", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "udp", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "gre", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "esp", CTLTYPE_NODE }, \
-       { "ah", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "etherip", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "ipcomp", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "carp", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "pfsync", CTLTYPE_NODE }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { 0, 0 }, \
-       { "divert", CTLTYPE_NODE }, \
+       [IPPROTO_IP]            = { "ip", CTLTYPE_NODE }, \
+       [IPPROTO_ICMP]          = { "icmp", CTLTYPE_NODE }, \
+       [IPPROTO_IGMP]          = { "igmp", CTLTYPE_NODE }, \
+       [IPPROTO_GGP]           = { "ggp", CTLTYPE_NODE }, \
+       [IPPROTO_IPIP]          = { "ipip", CTLTYPE_NODE }, \
+       [IPPROTO_TCP]           = { "tcp", CTLTYPE_NODE }, \
+       [IPPROTO_EGP]           = { "egp", CTLTYPE_NODE }, \
+       [IPPROTO_PUP]           = { "pup", CTLTYPE_NODE }, \
+       [IPPROTO_UDP]           = { "udp", CTLTYPE_NODE }, \
+       [IPPROTO_GRE]           = { "gre", CTLTYPE_NODE }, \
+       [IPPROTO_ESP]           = { "esp", CTLTYPE_NODE }, \
+       [IPPROTO_AH]            = { "ah", CTLTYPE_NODE }, \
+       [IPPROTO_ETHERIP]       = { "etherip", CTLTYPE_NODE }, \
+       [IPPROTO_IPCOMP]        = { "ipcomp", CTLTYPE_NODE }, \
+       [IPPROTO_CARP]          = { "carp", CTLTYPE_NODE }, \
+       [IPPROTO_PFSYNC]        = { "pfsync", CTLTYPE_NODE }, \
+       [IPPROTO_DIVERT]        = { "divert", CTLTYPE_NODE }, \
 }
 
 /*

Reply via email to