diff options
| author | Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> | 2003-03-19 03:54:09 -0800 |
|---|---|---|
| committer | David S. Miller <davem@nuts.ninka.net> | 2003-03-19 03:54:09 -0800 |
| commit | d970778686ff6440d9c3682f1dd91ac5110807c7 (patch) | |
| tree | 7cda13a2933229e6a75b1f657e680e66b694ec00 /include/net | |
| parent | cd931326e4732c76fb6452b6b1835321d6f564ed (diff) | |
[IPSEC]: fragmentation & tcp mss calculation.
1. Add local_df field to struct sk_buff to mark packets which
are to be fragmented locally despite of their IPv6ness of IP DF flag
2. Add ext2_header_len to tcp_opt to keep memory of part of header length
depending on route
3. Add trailer_len to struct dst_entry and xfrm_state to know how
much of space should be reserved at tail of frame for subsequent
transformations.
4. [BUG] icv_trun_len must be used while mss claculation, not
icv_full_length.
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/dst.h | 3 | ||||
| -rw-r--r-- | include/net/tcp.h | 3 | ||||
| -rw-r--r-- | include/net/xfrm.h | 6 |
3 files changed, 10 insertions, 2 deletions
diff --git a/include/net/dst.h b/include/net/dst.h index 1dcd50ff5496..e43ae2bb92b1 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -50,7 +50,8 @@ struct dst_entry unsigned long lastuse; unsigned long expires; - unsigned header_len; /* more space at head required */ + unsigned short header_len; /* more space at head required */ + unsigned short trailer_len; /* space to reserve at tail */ u32 metrics[RTAX_MAX]; struct dst_entry *path; diff --git a/include/net/tcp.h b/include/net/tcp.h index f1a634dfeb9b..b652650286fe 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -927,7 +927,8 @@ static __inline__ unsigned int tcp_current_mss(struct sock *sk, int large) if (dst) { u32 mtu = dst_pmtu(dst); - if (mtu != tp->pmtu_cookie) + if (mtu != tp->pmtu_cookie || + tp->ext2_header_len != dst->header_len) mss_now = tcp_sync_mss(sk, mtu); } if (tp->eff_sacks) diff --git a/include/net/xfrm.h b/include/net/xfrm.h index e77805c63601..fd99637a96bc 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -107,6 +107,7 @@ struct xfrm_state u16 family; xfrm_address_t saddr; int header_len; + int trailer_len; } props; struct xfrm_lifetime_cfg lft; @@ -255,6 +256,11 @@ static inline void xfrm_state_put(struct xfrm_state *x) __xfrm_state_destroy(x); } +static inline void xfrm_state_hold(struct xfrm_state *x) +{ + atomic_inc(&x->refcnt); +} + static inline int xfrm4_selector_match(struct xfrm_selector *sel, struct flowi *fl) { |
