summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorHideaki Yoshifuji <yoshfuji@linux-ipv6.org>2003-04-13 21:26:37 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2003-04-13 21:26:37 -0700
commit102408438600c3ae05e9563f0c995963898117e4 (patch)
treea97046378374ac417a6e3f758acd8bb3c5e87f22 /include
parent6457b195640568e1c1242f04ef5785a256d2cc72 (diff)
[IPV6]: Fixed multiple mistake extension header handling.
- double free if sending Parameter Problem message in reassembly code. - (sometimes) broken checksum - HbH not producing unknown header; it is only allowed at the beginning of the exthdrs chain. - wrong pointer value in Parameter Problem message.
Diffstat (limited to 'include')
-rw-r--r--include/net/protocol.h6
-rw-r--r--include/net/xfrm.h2
2 files changed, 5 insertions, 3 deletions
diff --git a/include/net/protocol.h b/include/net/protocol.h
index 6f493c4a23cc..6f0e4234a442 100644
--- a/include/net/protocol.h
+++ b/include/net/protocol.h
@@ -44,15 +44,17 @@ struct inet_protocol
#if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE)
struct inet6_protocol
{
- int (*handler)(struct sk_buff **skbp);
+ int (*handler)(struct sk_buff **skb, unsigned int *nhoffp);
void (*err_handler)(struct sk_buff *skb,
struct inet6_skb_parm *opt,
int type, int code, int offset,
__u32 info);
- int no_policy;
+ unsigned int flags; /* INET6_PROTO_xxx */
};
+#define INET6_PROTO_NOPOLICY 0x1
+#define INET6_PROTO_FINAL 0x2
#endif
/* This is used to register socket interfaces for IP protocols. */
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index be3c652da8c7..6868d7a41bba 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -760,7 +760,7 @@ extern int xfrm4_rcv(struct sk_buff *skb);
extern int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type);
extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler);
extern int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler);
-extern int xfrm6_rcv(struct sk_buff **pskb);
+extern int xfrm6_rcv(struct sk_buff **pskb, unsigned int *nhoffp);
extern int xfrm6_clear_mutable_options(struct sk_buff *skb, u16 *nh_offset, int dir);
extern int xfrm_user_policy(struct sock *sk, int optname, u8 *optval, int optlen);