34 #define pr_fmt(fmt) "IPv6: " fmt
36 #include <linux/module.h>
43 #include <linux/random.h>
46 #include <linux/list.h>
48 #include <linux/rtnetlink.h>
53 #include <linux/ipv6.h>
54 #include <linux/icmpv6.h>
87 struct net *
net = xs_net(x);
121 static int ipcomp6_tunnel_attach(
struct xfrm_state *x)
123 struct net *net = xs_net(x);
134 t = ipcomp6_tunnel_create(x);
149 static int ipcomp6_init_state(
struct xfrm_state *x)
153 x->
props.header_len = 0;
154 switch (x->
props.mode) {
169 err = ipcomp6_tunnel_attach(x);
179 static const struct xfrm_type ipcomp6_type =
181 .description =
"IPCOMP6",
184 .init_state = ipcomp6_init_state,
191 static const struct inet6_protocol ipcomp6_protocol =
194 .err_handler = ipcomp6_err,
195 .flags = INET6_PROTO_NOPOLICY,
198 static int __init ipcomp6_init(
void)
201 pr_info(
"%s: can't add xfrm type\n", __func__);
205 pr_info(
"%s: can't add protocol\n", __func__);
212 static void __exit ipcomp6_fini(
void)
215 pr_info(
"%s: can't remove protocol\n", __func__);
217 pr_info(
"%s: can't remove xfrm type\n", __func__);