Add spares to the network stack for FreeBSD-9:
- TCP keep* timers - TCP UTO (adjust from what was there already) - netmap - route caching - user cookie (temporary to allow for the real fix) Slightly re-shuffle struct ifnet moving fields out of the middle of spares and to better align. Discussed with: rwatson (slightly earlier version)
This commit is contained in:
parent
f9373bbdac
commit
d9a362862c
@ -195,8 +195,9 @@ struct ifnet {
|
|||||||
/* protected by if_addr_mtx */
|
/* protected by if_addr_mtx */
|
||||||
void *if_pf_kif;
|
void *if_pf_kif;
|
||||||
void *if_lagg; /* lagg glue */
|
void *if_lagg; /* lagg glue */
|
||||||
u_char if_alloctype; /* if_type at time of allocation */
|
char *if_description; /* interface description */
|
||||||
u_int if_fib; /* interface FIB */
|
u_int if_fib; /* interface FIB */
|
||||||
|
u_char if_alloctype; /* if_type at time of allocation */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Spare fields are added so that we can modify sensitive data
|
* Spare fields are added so that we can modify sensitive data
|
||||||
@ -204,9 +205,8 @@ struct ifnet {
|
|||||||
* be used with care where binary compatibility is required.
|
* be used with care where binary compatibility is required.
|
||||||
*/
|
*/
|
||||||
char if_cspare[3];
|
char if_cspare[3];
|
||||||
char *if_description; /* interface description */
|
|
||||||
void *if_pspare[7];
|
|
||||||
int if_ispare[4];
|
int if_ispare[4];
|
||||||
|
void *if_pspare[8]; /* 1 netmap, 7 TDB */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void if_init_f_t(void *);
|
typedef void if_init_f_t(void *);
|
||||||
|
@ -132,6 +132,7 @@ struct radix_node_head {
|
|||||||
(struct radix_node *rn, struct radix_node_head *head);
|
(struct radix_node *rn, struct radix_node_head *head);
|
||||||
struct radix_node rnh_nodes[3]; /* empty tree for common case */
|
struct radix_node rnh_nodes[3]; /* empty tree for common case */
|
||||||
int rnh_multipath; /* multipath capable ? */
|
int rnh_multipath; /* multipath capable ? */
|
||||||
|
u_int rnh_spare; /* route caching */
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
struct rwlock rnh_lock; /* locks entire radix tree */
|
struct rwlock rnh_lock; /* locks entire radix tree */
|
||||||
#endif
|
#endif
|
||||||
|
@ -179,8 +179,9 @@ struct inpcb {
|
|||||||
u_char inp_ip_minttl; /* (i) minimum TTL or drop */
|
u_char inp_ip_minttl; /* (i) minimum TTL or drop */
|
||||||
uint32_t inp_flowid; /* (x) flow id / queue id */
|
uint32_t inp_flowid; /* (x) flow id / queue id */
|
||||||
u_int inp_refcount; /* (i) refcount */
|
u_int inp_refcount; /* (i) refcount */
|
||||||
void *inp_pspare[4]; /* (x) rtentry / general use */
|
void *inp_pspare[5]; /* (x) route caching / general use */
|
||||||
u_int inp_ispare[4]; /* general use */
|
u_int inp_ispare[6]; /* (x) route caching / user cookie /
|
||||||
|
* general use */
|
||||||
|
|
||||||
/* Local and foreign ports, local and foreign addr. */
|
/* Local and foreign ports, local and foreign addr. */
|
||||||
struct in_conninfo inp_inc; /* (i/p) list for PCB's local port */
|
struct in_conninfo inp_inc; /* (i/p) list for PCB's local port */
|
||||||
|
@ -81,6 +81,8 @@ struct syncache {
|
|||||||
#endif
|
#endif
|
||||||
struct label *sc_label; /* MAC label reference */
|
struct label *sc_label; /* MAC label reference */
|
||||||
struct ucred *sc_cred; /* cred cache for jail checks */
|
struct ucred *sc_cred; /* cred cache for jail checks */
|
||||||
|
|
||||||
|
u_int32_t sc_spare[2]; /* UTO */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -203,9 +203,9 @@ struct tcpcb {
|
|||||||
struct cc_var *ccv; /* congestion control specific vars */
|
struct cc_var *ccv; /* congestion control specific vars */
|
||||||
struct osd *osd; /* storage for Khelp module data */
|
struct osd *osd; /* storage for Khelp module data */
|
||||||
|
|
||||||
int t_ispare; /* explicit pad for 64bit alignment */
|
uint32_t t_ispare[12]; /* 4 keep timers, 5 UTO, 3 TBD */
|
||||||
void *t_pspare2[4]; /* 4 TBD */
|
void *t_pspare2[4]; /* 4 TBD */
|
||||||
uint64_t _pad[12]; /* 7 UTO, 5 TBD (1-2 CC/RTT?) */
|
uint64_t _pad[6]; /* 6 TBD (1-2 CC/RTT?) */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -300,6 +300,7 @@ struct tcpopt {
|
|||||||
u_int16_t to_mss; /* maximum segment size */
|
u_int16_t to_mss; /* maximum segment size */
|
||||||
u_int8_t to_wscale; /* window scaling */
|
u_int8_t to_wscale; /* window scaling */
|
||||||
u_int8_t to_nsacks; /* number of SACK blocks */
|
u_int8_t to_nsacks; /* number of SACK blocks */
|
||||||
|
u_int32_t to_spare; /* UTO */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user