ip6_gre.c (188933ac139a6f8ab06cad369bd0200af947b00d) | ip6_gre.c (63159f29be1df7f93563a8a0f78c5e65fc844ed6) |
---|---|
1/* 2 * GRE over IPv6 protocol decoder. 3 * 4 * Authors: Dmitry Kozlov (xeb@mail.ru) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version --- 381 unchanged lines hidden (view full) --- 390 return; 391 ipv6h = (const struct ipv6hdr *)skb->data; 392 p = (__be16 *)(skb->data + offset); 393 394 t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr, 395 flags & GRE_KEY ? 396 *(((__be32 *)p) + (grehlen / 4) - 1) : 0, 397 p[1]); | 1/* 2 * GRE over IPv6 protocol decoder. 3 * 4 * Authors: Dmitry Kozlov (xeb@mail.ru) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version --- 381 unchanged lines hidden (view full) --- 390 return; 391 ipv6h = (const struct ipv6hdr *)skb->data; 392 p = (__be16 *)(skb->data + offset); 393 394 t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr, 395 flags & GRE_KEY ? 396 *(((__be32 *)p) + (grehlen / 4) - 1) : 0, 397 p[1]); |
398 if (t == NULL) | 398 if (!t) |
399 return; 400 401 switch (type) { 402 __u32 teli; 403 struct ipv6_tlv_tnl_enc_lim *tel; 404 __u32 mtu; 405 case ICMPV6_DEST_UNREACH: 406 net_warn_ratelimited("%s: Path to destination invalid or inactive!\n", --- 568 unchanged lines hidden (view full) --- 975 if (p->flags & IP6_TNL_F_CAP_XMIT) { 976 int strict = (ipv6_addr_type(&p->raddr) & 977 (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL)); 978 979 struct rt6_info *rt = rt6_lookup(t->net, 980 &p->raddr, &p->laddr, 981 p->link, strict); 982 | 399 return; 400 401 switch (type) { 402 __u32 teli; 403 struct ipv6_tlv_tnl_enc_lim *tel; 404 __u32 mtu; 405 case ICMPV6_DEST_UNREACH: 406 net_warn_ratelimited("%s: Path to destination invalid or inactive!\n", --- 568 unchanged lines hidden (view full) --- 975 if (p->flags & IP6_TNL_F_CAP_XMIT) { 976 int strict = (ipv6_addr_type(&p->raddr) & 977 (IPV6_ADDR_MULTICAST|IPV6_ADDR_LINKLOCAL)); 978 979 struct rt6_info *rt = rt6_lookup(t->net, 980 &p->raddr, &p->laddr, 981 p->link, strict); 982 |
983 if (rt == NULL) | 983 if (!rt) |
984 return; 985 986 if (rt->dst.dev) { 987 dev->hard_header_len = rt->dst.dev->hard_header_len + addend; 988 989 if (set_mtu) { 990 dev->mtu = rt->dst.dev->mtu - addend; 991 if (!(t->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT)) --- 76 unchanged lines hidden (view full) --- 1068 case SIOCGETTUNNEL: 1069 if (dev == ign->fb_tunnel_dev) { 1070 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) { 1071 err = -EFAULT; 1072 break; 1073 } 1074 ip6gre_tnl_parm_from_user(&p1, &p); 1075 t = ip6gre_tunnel_locate(net, &p1, 0); | 984 return; 985 986 if (rt->dst.dev) { 987 dev->hard_header_len = rt->dst.dev->hard_header_len + addend; 988 989 if (set_mtu) { 990 dev->mtu = rt->dst.dev->mtu - addend; 991 if (!(t->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT)) --- 76 unchanged lines hidden (view full) --- 1068 case SIOCGETTUNNEL: 1069 if (dev == ign->fb_tunnel_dev) { 1070 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) { 1071 err = -EFAULT; 1072 break; 1073 } 1074 ip6gre_tnl_parm_from_user(&p1, &p); 1075 t = ip6gre_tunnel_locate(net, &p1, 0); |
1076 if (t == NULL) | 1076 if (!t) |
1077 t = netdev_priv(dev); 1078 } 1079 memset(&p, 0, sizeof(p)); 1080 ip6gre_tnl_parm_to_user(&p, &t->parms); 1081 if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p))) 1082 err = -EFAULT; 1083 break; 1084 --- 54 unchanged lines hidden (view full) --- 1139 1140 if (dev == ign->fb_tunnel_dev) { 1141 err = -EFAULT; 1142 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) 1143 goto done; 1144 err = -ENOENT; 1145 ip6gre_tnl_parm_from_user(&p1, &p); 1146 t = ip6gre_tunnel_locate(net, &p1, 0); | 1077 t = netdev_priv(dev); 1078 } 1079 memset(&p, 0, sizeof(p)); 1080 ip6gre_tnl_parm_to_user(&p, &t->parms); 1081 if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p))) 1082 err = -EFAULT; 1083 break; 1084 --- 54 unchanged lines hidden (view full) --- 1139 1140 if (dev == ign->fb_tunnel_dev) { 1141 err = -EFAULT; 1142 if (copy_from_user(&p, ifr->ifr_ifru.ifru_data, sizeof(p))) 1143 goto done; 1144 err = -ENOENT; 1145 ip6gre_tnl_parm_from_user(&p1, &p); 1146 t = ip6gre_tunnel_locate(net, &p1, 0); |
1147 if (t == NULL) | 1147 if (!t) |
1148 goto done; 1149 err = -EPERM; 1150 if (t == netdev_priv(ign->fb_tunnel_dev)) 1151 goto done; 1152 dev = t->dev; 1153 } 1154 unregister_netdevice(dev); 1155 err = 0; --- 582 unchanged lines hidden --- | 1148 goto done; 1149 err = -EPERM; 1150 if (t == netdev_priv(ign->fb_tunnel_dev)) 1151 goto done; 1152 dev = t->dev; 1153 } 1154 unregister_netdevice(dev); 1155 err = 0; --- 582 unchanged lines hidden --- |