sit.c (188933ac139a6f8ab06cad369bd0200af947b00d) | sit.c (63159f29be1df7f93563a8a0f78c5e65fc844ed6) |
---|---|
1/* 2 * IPv6 over IPv4 tunnel device - Simple Internet Transition (SIT) 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 237 unchanged lines hidden (view full) --- 246 247 if (parms->name[0]) 248 strlcpy(name, parms->name, IFNAMSIZ); 249 else 250 strcpy(name, "sit%d"); 251 252 dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN, 253 ipip6_tunnel_setup); | 1/* 2 * IPv6 over IPv4 tunnel device - Simple Internet Transition (SIT) 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 237 unchanged lines hidden (view full) --- 246 247 if (parms->name[0]) 248 strlcpy(name, parms->name, IFNAMSIZ); 249 else 250 strcpy(name, "sit%d"); 251 252 dev = alloc_netdev(sizeof(*t), name, NET_NAME_UNKNOWN, 253 ipip6_tunnel_setup); |
254 if (dev == NULL) | 254 if (!dev) |
255 return NULL; 256 257 dev_net_set(dev, net); 258 259 nt = netdev_priv(dev); 260 261 nt->parms = *parms; 262 if (ipip6_tunnel_create(dev) < 0) --- 287 unchanged lines hidden (view full) --- 550 } 551 552 err = -ENOENT; 553 554 t = ipip6_tunnel_lookup(dev_net(skb->dev), 555 skb->dev, 556 iph->daddr, 557 iph->saddr); | 255 return NULL; 256 257 dev_net_set(dev, net); 258 259 nt = netdev_priv(dev); 260 261 nt->parms = *parms; 262 if (ipip6_tunnel_create(dev) < 0) --- 287 unchanged lines hidden (view full) --- 550 } 551 552 err = -ENOENT; 553 554 t = ipip6_tunnel_lookup(dev_net(skb->dev), 555 skb->dev, 556 iph->daddr, 557 iph->saddr); |
558 if (t == NULL) | 558 if (!t) |
559 goto out; 560 561 if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) { 562 ipv4_update_pmtu(skb, dev_net(skb->dev), info, 563 t->parms.link, 0, IPPROTO_IPV6, 0); 564 err = 0; 565 goto out; 566 } --- 266 unchanged lines hidden (view full) --- 833 /* ISATAP (RFC4214) - must come before 6to4 */ 834 if (dev->priv_flags & IFF_ISATAP) { 835 struct neighbour *neigh = NULL; 836 bool do_tx_error = false; 837 838 if (skb_dst(skb)) 839 neigh = dst_neigh_lookup(skb_dst(skb), &iph6->daddr); 840 | 559 goto out; 560 561 if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) { 562 ipv4_update_pmtu(skb, dev_net(skb->dev), info, 563 t->parms.link, 0, IPPROTO_IPV6, 0); 564 err = 0; 565 goto out; 566 } --- 266 unchanged lines hidden (view full) --- 833 /* ISATAP (RFC4214) - must come before 6to4 */ 834 if (dev->priv_flags & IFF_ISATAP) { 835 struct neighbour *neigh = NULL; 836 bool do_tx_error = false; 837 838 if (skb_dst(skb)) 839 neigh = dst_neigh_lookup(skb_dst(skb), &iph6->daddr); 840 |
841 if (neigh == NULL) { | 841 if (!neigh) { |
842 net_dbg_ratelimited("nexthop == NULL\n"); 843 goto tx_error; 844 } 845 846 addr6 = (const struct in6_addr *)&neigh->primary_key; 847 addr_type = ipv6_addr_type(addr6); 848 849 if ((addr_type & IPV6_ADDR_UNICAST) && --- 12 unchanged lines hidden (view full) --- 862 863 if (!dst) { 864 struct neighbour *neigh = NULL; 865 bool do_tx_error = false; 866 867 if (skb_dst(skb)) 868 neigh = dst_neigh_lookup(skb_dst(skb), &iph6->daddr); 869 | 842 net_dbg_ratelimited("nexthop == NULL\n"); 843 goto tx_error; 844 } 845 846 addr6 = (const struct in6_addr *)&neigh->primary_key; 847 addr_type = ipv6_addr_type(addr6); 848 849 if ((addr_type & IPV6_ADDR_UNICAST) && --- 12 unchanged lines hidden (view full) --- 862 863 if (!dst) { 864 struct neighbour *neigh = NULL; 865 bool do_tx_error = false; 866 867 if (skb_dst(skb)) 868 neigh = dst_neigh_lookup(skb_dst(skb), &iph6->daddr); 869 |
870 if (neigh == NULL) { | 870 if (!neigh) { |
871 net_dbg_ratelimited("nexthop == NULL\n"); 872 goto tx_error; 873 } 874 875 addr6 = (const struct in6_addr *)&neigh->primary_key; 876 addr_type = ipv6_addr_type(addr6); 877 878 if (addr_type == IPV6_ADDR_ANY) { --- 274 unchanged lines hidden (view full) --- 1153 case SIOCGET6RD: 1154#endif 1155 if (dev == sitn->fb_tunnel_dev) { 1156 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) { 1157 err = -EFAULT; 1158 break; 1159 } 1160 t = ipip6_tunnel_locate(net, &p, 0); | 871 net_dbg_ratelimited("nexthop == NULL\n"); 872 goto tx_error; 873 } 874 875 addr6 = (const struct in6_addr *)&neigh->primary_key; 876 addr_type = ipv6_addr_type(addr6); 877 878 if (addr_type == IPV6_ADDR_ANY) { --- 274 unchanged lines hidden (view full) --- 1153 case SIOCGET6RD: 1154#endif 1155 if (dev == sitn->fb_tunnel_dev) { 1156 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) { 1157 err = -EFAULT; 1158 break; 1159 } 1160 t = ipip6_tunnel_locate(net, &p, 0); |
1161 if (t == NULL) | 1161 if (!t) |
1162 t = netdev_priv(dev); 1163 } 1164 1165 err = -EFAULT; 1166 if (cmd == SIOCGETTUNNEL) { 1167 memcpy(&p, &t->parms, sizeof(p)); 1168 if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, 1169 sizeof(p))) --- 67 unchanged lines hidden (view full) --- 1237 goto done; 1238 1239 if (dev == sitn->fb_tunnel_dev) { 1240 err = -EFAULT; 1241 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) 1242 goto done; 1243 err = -ENOENT; 1244 t = ipip6_tunnel_locate(net, &p, 0); | 1162 t = netdev_priv(dev); 1163 } 1164 1165 err = -EFAULT; 1166 if (cmd == SIOCGETTUNNEL) { 1167 memcpy(&p, &t->parms, sizeof(p)); 1168 if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, 1169 sizeof(p))) --- 67 unchanged lines hidden (view full) --- 1237 goto done; 1238 1239 if (dev == sitn->fb_tunnel_dev) { 1240 err = -EFAULT; 1241 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) 1242 goto done; 1243 err = -ENOENT; 1244 t = ipip6_tunnel_locate(net, &p, 0); |
1245 if (t == NULL) | 1245 if (!t) |
1246 goto done; 1247 err = -EPERM; 1248 if (t == netdev_priv(sitn->fb_tunnel_dev)) 1249 goto done; 1250 dev = t->dev; 1251 } 1252 unregister_netdevice(dev); 1253 err = 0; --- 671 unchanged lines hidden --- | 1246 goto done; 1247 err = -EPERM; 1248 if (t == netdev_priv(sitn->fb_tunnel_dev)) 1249 goto done; 1250 dev = t->dev; 1251 } 1252 unregister_netdevice(dev); 1253 err = 0; --- 671 unchanged lines hidden --- |