Hi,

To control the lifetime of IPv6 addresses, prefixes and default
routers, the kernel and ndp use a bunch of expire fields.  Currently
they are int or long, but expire should always be time_t.  Move
vltime and pltime to u_int32_t everywhere.  Sort struct fields by
size.  Struct inet6_ndpr_msghdr is not used at all, so remove it.

ok?

bluhm

Index: netinet6/nd6.h
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/nd6.h,v
retrieving revision 1.31
diff -u -p -u -p -r1.31 nd6.h
--- netinet6/nd6.h      1 Jul 2013 14:22:20 -0000       1.31
+++ netinet6/nd6.h      7 Aug 2013 22:54:51 -0000
@@ -46,14 +46,14 @@ struct      llinfo_nd6 {
        struct  llinfo_nd6 *ln_prev;
        struct  rtentry *ln_rt;
        struct  mbuf *ln_hold;  /* last packet until resolved/timeout */
-       long    ln_asked;       /* number of queries already sent for this addr 
*/
-       u_long  ln_expire;      /* lifetime for NDP state transition */
+       time_t  ln_expire;      /* lifetime for NDP state transition */
+       long    ln_asked;       /* number of queries already sent for addr */
+       int     ln_byhint;      /* # of times we made it reachable by UL hint */
        short   ln_state;       /* reachability state */
        short   ln_router;      /* 2^0: ND6 router bit */
-       int     ln_byhint;      /* # of times we made it reachable by UL hint */
 
        long    ln_ntick;
-       struct timeout ln_timer_ch;
+       struct  timeout ln_timer_ch;
 };
 
 #define ND6_LLINFO_PURGE       -3
@@ -107,10 +107,10 @@ struct nd_ifinfo {
 struct in6_nbrinfo {
        char ifname[IFNAMSIZ];  /* if name, e.g. "en0" */
        struct in6_addr addr;   /* IPv6 address of the neighbor */
-       long    asked;          /* number of queries already sent for this addr 
*/
+       time_t  expire;         /* lifetime for NDP state transition */
+       long    asked;          /* number of queries already sent for addr */
        int     isrouter;       /* if it acts as a router */
        int     state;          /* reachability state */
-       int     expire;         /* lifetime for NDP state transition */
 };
 
 #define DRLSTSIZ 10
@@ -119,19 +119,19 @@ struct    in6_drlist {
        char ifname[IFNAMSIZ];
        struct {
                struct  in6_addr rtaddr;
-               u_char  flags;
+               time_t  expire;
                u_short rtlifetime;
-               u_long  expire;
-               u_short if_index;
+               u_short if_index;
+               u_char  flags;
        } defrouter[DRLSTSIZ];
 };
 
 struct in6_defrouter {
        struct  sockaddr_in6 rtaddr;
-       u_char  flags;
+       time_t  expire;
        u_short rtlifetime;
-       u_long  expire;
-       u_short if_index;
+       u_short if_index;
+       u_char  flags;
 };
 
 #ifdef _KERNEL
@@ -139,14 +139,14 @@ struct    in6_oprlist {
        char ifname[IFNAMSIZ];
        struct {
                struct  in6_addr prefix;
-               struct prf_ra raflags;
+               struct  prf_ra raflags;
+               time_t  expire;
+               u_int32_t vltime;
+               u_int32_t pltime;
+               u_short if_index;
+               u_short advrtrs; /* number of advertisement routers */
                u_char  prefixlen;
                u_char  origin;
-               u_long vltime;
-               u_long pltime;
-               u_long expire;
-               u_short if_index;
-               u_short advrtrs; /* number of advertisement routers */
                struct  in6_addr advrtr[DRLSTSIZ]; /* XXX: explicit limit */
        } prefix[PRLSTSIZ];
 };
@@ -156,30 +156,30 @@ struct    in6_prlist {
        char ifname[IFNAMSIZ];
        struct {
                struct  in6_addr prefix;
-               struct prf_ra raflags;
-               u_char  prefixlen;
-               u_char  origin;
+               struct  prf_ra raflags;
+               time_t  expire;
                u_int32_t vltime;
                u_int32_t pltime;
-               time_t expire;
-               u_short if_index;
-               u_short advrtrs; /* number of advertisement routers */
+               u_short if_index;
+               u_short advrtrs; /* number of advertisement routers */
+               u_char  prefixlen;
+               u_char  origin;
                struct  in6_addr advrtr[DRLSTSIZ]; /* XXX: explicit limit */
        } prefix[PRLSTSIZ];
 };
 
 struct in6_prefix {
        struct  sockaddr_in6 prefix;
-       struct prf_ra raflags;
-       u_char  prefixlen;
-       u_char  origin;
+       struct  prf_ra raflags;
+       time_t  expire;
        u_int32_t vltime;
        u_int32_t pltime;
-       time_t expire;
        u_int32_t flags;
-       int refcnt;
-       u_short if_index;
-       u_short advrtrs; /* number of advertisement routers */
+       int     refcnt;
+       u_short if_index;
+       u_short advrtrs; /* number of advertisement routers */
+       u_char  prefixlen;
+       u_char  origin;
        /* struct sockaddr_in6 advrtr[] */
 };
 
@@ -242,11 +242,11 @@ TAILQ_HEAD(nd_drhead, nd_defrouter);
 struct nd_defrouter {
        TAILQ_ENTRY(nd_defrouter) dr_entry;
        struct  in6_addr rtaddr;
-       u_char  flags;          /* flags on RA message */
-       u_short rtlifetime;
-       u_long  expire;
        struct  ifnet *ifp;
+       time_t  expire;
        int     installed;      /* is installed into kernel routing table */
+       u_short rtlifetime;
+       u_char  flags;          /* flags on RA message */
 };
 
 struct nd_prefix {
@@ -255,13 +255,13 @@ struct nd_prefix {
        struct sockaddr_in6 ndpr_prefix;        /* prefix */
        struct in6_addr ndpr_mask; /* netmask derived from the prefix */
 
-       u_int32_t ndpr_vltime;  /* advertised valid lifetime */
-       u_int32_t ndpr_pltime;  /* advertised preferred lifetime */
-
        time_t ndpr_expire;     /* expiration time of the prefix */
        time_t ndpr_preferred;  /* preferred time of the prefix */
        time_t ndpr_lastupdate; /* reception time of last advertisement */
 
+       u_int32_t ndpr_vltime;  /* advertised valid lifetime */
+       u_int32_t ndpr_pltime;  /* advertised preferred lifetime */
+
        struct prf_ra ndpr_flags;
        u_int32_t ndpr_stateflags; /* actual state flags */
        /* list of routers that advertise the prefix: */
@@ -274,32 +274,6 @@ struct nd_prefix {
 #define ndpr_raf_onlink                ndpr_flags.onlink
 #define ndpr_raf_auto          ndpr_flags.autonomous
 #define ndpr_raf_router                ndpr_flags.router
-
-/*
- * Message format for use in obtaining information about prefixes
- * from inet6 sysctl function
- */
-struct inet6_ndpr_msghdr {
-       u_short inpm_msglen;    /* to skip over non-understood messages */
-       u_char  inpm_version;   /* future binary compatibility */
-       u_char  inpm_type;      /* message type */
-       struct in6_addr inpm_prefix;
-       u_long  prm_vltim;
-       u_long  prm_pltime;
-       u_long  prm_expire;
-       u_long  prm_preferred;
-       struct in6_prflags prm_flags;
-       u_short prm_index;      /* index for associated ifp */
-       u_char  prm_plen;       /* length of prefix in bits */
-};
-
-#define prm_raf_onlink         prm_flags.prf_ra.onlink
-#define prm_raf_auto           prm_flags.prf_ra.autonomous
-
-#define prm_statef_onlink      prm_flags.prf_state.onlink
-
-#define prm_rrf_decrvalid      prm_flags.prf_rr.decrvalid
-#define prm_rrf_decrprefd      prm_flags.prf_rr.decrprefd
 
 struct nd_pfxrouter {
        LIST_ENTRY(nd_pfxrouter) pfr_entry;

Reply via email to