X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv4%2Fxfrm4_tunnel.c;h=dcc04644ccecafe2a7bc1c848f15f0d014be2b4a;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=0d1a0b0c7901265a7b76823365435aed1b6bd286;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/net/ipv4/xfrm4_tunnel.c b/net/ipv4/xfrm4_tunnel.c index 0d1a0b0c7..dcc04644c 100644 --- a/net/ipv4/xfrm4_tunnel.c +++ b/net/ipv4/xfrm4_tunnel.c @@ -4,13 +4,13 @@ */ #include +#include #include #include #include -static int ipip_output(struct sk_buff **pskb) +static int ipip_output(struct sk_buff *skb) { - struct sk_buff *skb = *pskb; struct iphdr *iph; iph = skb->nh.iph; @@ -43,6 +43,8 @@ int xfrm4_tunnel_register(struct xfrm_tunnel *handler) return ret; } +EXPORT_SYMBOL(xfrm4_tunnel_register); + int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler) { int ret; @@ -60,6 +62,8 @@ int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler) return ret; } +EXPORT_SYMBOL(xfrm4_tunnel_deregister); + static int ipip_rcv(struct sk_buff *skb) { struct xfrm_tunnel *handler = ipip_handler; @@ -68,7 +72,7 @@ static int ipip_rcv(struct sk_buff *skb) if (handler && handler->handler(skb) == 0) return 0; - return xfrm4_rcv_encap(skb, 0); + return xfrm4_rcv(skb); } static void ipip_err(struct sk_buff *skb, u32 info) @@ -84,6 +88,10 @@ static int ipip_init_state(struct xfrm_state *x, void *args) { if (!x->props.mode) return -EINVAL; + + if (x->encap) + return -EINVAL; + x->props.header_len = sizeof(struct iphdr); return 0;