diff options
Diffstat (limited to 'net/ipv6/sit.c')
| -rw-r--r-- | net/ipv6/sit.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 976e68244b99..b1eea811be48 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c | |||
| @@ -62,7 +62,6 @@ | |||
| 62 | #define HASH_SIZE 16 | 62 | #define HASH_SIZE 16 |
| 63 | #define HASH(addr) (((__force u32)addr^((__force u32)addr>>4))&0xF) | 63 | #define HASH(addr) (((__force u32)addr^((__force u32)addr>>4))&0xF) |
| 64 | 64 | ||
| 65 | static void ipip6_fb_tunnel_init(struct net_device *dev); | ||
| 66 | static void ipip6_tunnel_init(struct net_device *dev); | 65 | static void ipip6_tunnel_init(struct net_device *dev); |
| 67 | static void ipip6_tunnel_setup(struct net_device *dev); | 66 | static void ipip6_tunnel_setup(struct net_device *dev); |
| 68 | 67 | ||
| @@ -364,7 +363,6 @@ ipip6_tunnel_add_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a, int chg) | |||
| 364 | goto out; | 363 | goto out; |
| 365 | } | 364 | } |
| 366 | 365 | ||
| 367 | INIT_RCU_HEAD(&p->rcu_head); | ||
| 368 | p->next = t->prl; | 366 | p->next = t->prl; |
| 369 | p->addr = a->addr; | 367 | p->addr = a->addr; |
| 370 | p->flags = a->flags; | 368 | p->flags = a->flags; |
| @@ -745,7 +743,7 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb, | |||
| 745 | skb_dst(skb)->ops->update_pmtu(skb_dst(skb), mtu); | 743 | skb_dst(skb)->ops->update_pmtu(skb_dst(skb), mtu); |
| 746 | 744 | ||
| 747 | if (skb->len > mtu) { | 745 | if (skb->len > mtu) { |
| 748 | icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, dev); | 746 | icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); |
| 749 | ip_rt_put(rt); | 747 | ip_rt_put(rt); |
| 750 | goto tx_error; | 748 | goto tx_error; |
| 751 | } | 749 | } |
| @@ -1120,7 +1118,7 @@ static void ipip6_tunnel_init(struct net_device *dev) | |||
| 1120 | ipip6_tunnel_bind_dev(dev); | 1118 | ipip6_tunnel_bind_dev(dev); |
| 1121 | } | 1119 | } |
| 1122 | 1120 | ||
| 1123 | static void ipip6_fb_tunnel_init(struct net_device *dev) | 1121 | static void __net_init ipip6_fb_tunnel_init(struct net_device *dev) |
| 1124 | { | 1122 | { |
| 1125 | struct ip_tunnel *tunnel = netdev_priv(dev); | 1123 | struct ip_tunnel *tunnel = netdev_priv(dev); |
| 1126 | struct iphdr *iph = &tunnel->parms.iph; | 1124 | struct iphdr *iph = &tunnel->parms.iph; |
| @@ -1145,7 +1143,7 @@ static struct xfrm_tunnel sit_handler = { | |||
| 1145 | .priority = 1, | 1143 | .priority = 1, |
| 1146 | }; | 1144 | }; |
| 1147 | 1145 | ||
| 1148 | static void sit_destroy_tunnels(struct sit_net *sitn, struct list_head *head) | 1146 | static void __net_exit sit_destroy_tunnels(struct sit_net *sitn, struct list_head *head) |
| 1149 | { | 1147 | { |
| 1150 | int prio; | 1148 | int prio; |
| 1151 | 1149 | ||
| @@ -1162,7 +1160,7 @@ static void sit_destroy_tunnels(struct sit_net *sitn, struct list_head *head) | |||
| 1162 | } | 1160 | } |
| 1163 | } | 1161 | } |
| 1164 | 1162 | ||
| 1165 | static int sit_init_net(struct net *net) | 1163 | static int __net_init sit_init_net(struct net *net) |
| 1166 | { | 1164 | { |
| 1167 | struct sit_net *sitn = net_generic(net, sit_net_id); | 1165 | struct sit_net *sitn = net_generic(net, sit_net_id); |
| 1168 | int err; | 1166 | int err; |
| @@ -1195,7 +1193,7 @@ err_alloc_dev: | |||
| 1195 | return err; | 1193 | return err; |
| 1196 | } | 1194 | } |
| 1197 | 1195 | ||
| 1198 | static void sit_exit_net(struct net *net) | 1196 | static void __net_exit sit_exit_net(struct net *net) |
| 1199 | { | 1197 | { |
| 1200 | struct sit_net *sitn = net_generic(net, sit_net_id); | 1198 | struct sit_net *sitn = net_generic(net, sit_net_id); |
| 1201 | LIST_HEAD(list); | 1199 | LIST_HEAD(list); |
| @@ -1228,15 +1226,14 @@ static int __init sit_init(void) | |||
| 1228 | 1226 | ||
| 1229 | printk(KERN_INFO "IPv6 over IPv4 tunneling driver\n"); | 1227 | printk(KERN_INFO "IPv6 over IPv4 tunneling driver\n"); |
| 1230 | 1228 | ||
| 1231 | if (xfrm4_tunnel_register(&sit_handler, AF_INET6) < 0) { | ||
| 1232 | printk(KERN_INFO "sit init: Can't add protocol\n"); | ||
| 1233 | return -EAGAIN; | ||
| 1234 | } | ||
| 1235 | |||
| 1236 | err = register_pernet_device(&sit_net_ops); | 1229 | err = register_pernet_device(&sit_net_ops); |
| 1237 | if (err < 0) | 1230 | if (err < 0) |
| 1238 | xfrm4_tunnel_deregister(&sit_handler, AF_INET6); | 1231 | return err; |
| 1239 | 1232 | err = xfrm4_tunnel_register(&sit_handler, AF_INET6); | |
| 1233 | if (err < 0) { | ||
| 1234 | unregister_pernet_device(&sit_net_ops); | ||
| 1235 | printk(KERN_INFO "sit init: Can't add protocol\n"); | ||
| 1236 | } | ||
| 1240 | return err; | 1237 | return err; |
| 1241 | } | 1238 | } |
| 1242 | 1239 | ||
