Re: [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
Hello! > I was able to set a nbma gre tunnel, add routes to it and it worked > perfectly ok. > > Link-level next hop worked: > ip route add via dev onlink This can work if you use gre0. By plain luck it has all-zero dev_addr. It will break on nbma devices set with: ip tunnel add XXX mode gre local a.b.c.d [key whatever] ... Alexey - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
Hi, Alexey Kuznetsov wrote: The only dubious case is when next hop is set using routing tables. But code in ipgre_tunnel_xmit() is ready to accept this situation, it checks for zero destination address and fixes it when it is able to. Nevertheless, it does not work. Another thoughts? Could you explain this a little more? I was able to set a nbma gre tunnel, add routes to it and it worked perfectly ok. Link-level next hop worked: ip route add via dev onlink Also normal route with static neighbor worked: ip neigh add lladdr nud permanent dev ip route add via In both cases packets were routed as expected to hosts accessible using the added route. And sendto() sent a packet correctly with destination link-level-address set. Did I miss/misunderstand something? Cheers, Timo - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
From: Alexey Kuznetsov <[EMAIL PROTECTED]> Date: Tue, 23 Oct 2007 23:03:24 +0400 > Hello! > > > When GRE tunnel is in NBMA mode, this patch allows an application to use > > a PF_PACKET socket to: > > - send a packet to specific NBMA address with sendto() > > - use recvfrom() to receive packet and check which NBMA address it came from > > > > This is required to implement properly NHRP over GRE tunnel. > > Ack. This is good idea. Patch applied, thanks everyone! - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
Hello! Me wrote: > Ack. This is good idea. > > Frankly, I was sure ip_gre worked in this way all these years. > I do not remember any reasons why it was crippled. > > The only dubious case is when next hop is set using routing tables. > But code in ipgre_tunnel_xmit() is ready to accept this situation, > it checks for zero destination address and fixes it when it is able to. Nevertheless, it does not work. The reason is that NOARP arp entries on device with initialized hard_header are initialized not to all zeros, but to dev->dev_addr. So that, netxthop from routing tables is ignored and all gre packets are lost in loopback. Not good. The problem can be ignored. I am even not sure that someone uses this feature. Actually, it was not recommended in documentation. Alternatively, arp.c can be changed to generate 0 addresses instead of dev->dev_addr. Normally it is equally good, but I am not sure about possible side effects. Another thoughts? Alexey - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
Hello! > When GRE tunnel is in NBMA mode, this patch allows an application to use > a PF_PACKET socket to: > - send a packet to specific NBMA address with sendto() > - use recvfrom() to receive packet and check which NBMA address it came from > > This is required to implement properly NHRP over GRE tunnel. Ack. This is good idea. Frankly, I was sure ip_gre worked in this way all these years. I do not remember any reasons why it was crippled. The only dubious case is when next hop is set using routing tables. But code in ipgre_tunnel_xmit() is ready to accept this situation, it checks for zero destination address and fixes it when it is able to. Alexey - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
Timo Teräs wrote: When GRE tunnel is in NBMA mode, this patch allows an application to use a PF_PACKET socket to: - send a packet to specific NBMA address with sendto() - use recvfrom() to receive packet and check which NBMA address it came from This is required to implement properly NHRP over GRE tunnel. Signed-off-by: Timo Teras <[EMAIL PROTECTED]> --- Patrick McHardy wrote: Your mailer mangled tabs, it won't apply like this. Try sending to yourself for testing, then repost when it works properly. Tabs were ok, I think. But somehow it seems that cut'n'paste from my default editor loses the space from context lines. It should be good now. Might have been a problem on my side, I just updated my mailer and it still displays tabs broken, but the actual patch seems fine. Sorry for the noise ... - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
When GRE tunnel is in NBMA mode, this patch allows an application to use a PF_PACKET socket to: - send a packet to specific NBMA address with sendto() - use recvfrom() to receive packet and check which NBMA address it came from This is required to implement properly NHRP over GRE tunnel. Signed-off-by: Timo Teras <[EMAIL PROTECTED]> --- Patrick McHardy wrote: Your mailer mangled tabs, it won't apply like this. Try sending to yourself for testing, then repost when it works properly. Tabs were ok, I think. But somehow it seems that cut'n'paste from my default editor loses the space from context lines. It should be good now. net/ipv4/ip_gre.c | 12 +++- 1 files changed, 11 insertions(+), 1 deletions(-) diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index f151900..b1e3816 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -1033,7 +1033,6 @@ static int ipgre_tunnel_change_mtu(struct net_device *dev, int new_mtu) return 0; } -#ifdef CONFIG_NET_IPGRE_BROADCAST /* Nice toy. Unfortunately, useless in real life :-) It allows to construct virtual multiprotocol broadcast "LAN" over the Internet, provided multicast routing is tuned. @@ -1092,10 +1091,19 @@ static int ipgre_header(struct sk_buff *skb, struct net_device *dev, return -t->hlen; } +static int ipgre_header_parse(const struct sk_buff *skb, unsigned char *haddr) +{ + struct iphdr *iph = (struct iphdr*) skb_mac_header(skb); + memcpy(haddr, &iph->saddr, 4); + return 4; +} + static const struct header_ops ipgre_header_ops = { .create = ipgre_header, + .parse = ipgre_header_parse, }; +#ifdef CONFIG_NET_IPGRE_BROADCAST static int ipgre_open(struct net_device *dev) { struct ip_tunnel *t = netdev_priv(dev); @@ -1197,6 +1205,8 @@ static int ipgre_tunnel_init(struct net_device *dev) dev->stop = ipgre_close; } #endif + } else { + dev->header_ops = &ipgre_header_ops; } if (!tdev && tunnel->parms.link) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
When GRE tunnel is in NBMA mode, this patch allows an application to use a PF_PACKET socket to: - send a packet to specific NBMA address with sendto() - use recvfrom() to receive packet and check which NBMA address it came from This is required to implement properly NHRP over GRE tunnel. Signed-off-by: Timo Teras <[EMAIL PROTECTED]> --- Your mailer mangled tabs, it won't apply like this. Try sending to yourself for testing, then repost when it works properly. Sorry. Tabs were ok, but the initial white space on context lines was somehow removed. Apparently a bug in my editor where I cut/pasted from. net/ipv4/ip_gre.c | 12 +++- 1 files changed, 11 insertions(+), 1 deletions(-) diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index f151900..b1e3816 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -1033,7 +1033,6 @@ static int ipgre_tunnel_change_mtu(struct net_device *dev, int new_mtu) return 0; } -#ifdef CONFIG_NET_IPGRE_BROADCAST /* Nice toy. Unfortunately, useless in real life :-) It allows to construct virtual multiprotocol broadcast "LAN" over the Internet, provided multicast routing is tuned. @@ -1092,10 +1091,19 @@ static int ipgre_header(struct sk_buff *skb, struct net_device *dev, return -t->hlen; } +static int ipgre_header_parse(const struct sk_buff *skb, unsigned char *haddr) +{ + struct iphdr *iph = (struct iphdr*) skb_mac_header(skb); + memcpy(haddr, &iph->saddr, 4); + return 4; +} + static const struct header_ops ipgre_header_ops = { .create = ipgre_header, + .parse = ipgre_header_parse, }; +#ifdef CONFIG_NET_IPGRE_BROADCAST static int ipgre_open(struct net_device *dev) { struct ip_tunnel *t = netdev_priv(dev); @@ -1197,6 +1205,8 @@ static int ipgre_tunnel_init(struct net_device *dev) dev->stop = ipgre_close; } #endif + } else { + dev->header_ops = &ipgre_header_ops; } if (!tdev && tunnel->parms.link) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
Timo Teräs wrote: When GRE tunnel is in NBMA mode, this patch allows an application to use a PF_PACKET socket to: - send a packet to specific NBMA address with sendto() - use recvfrom() to receive packet and check which NBMA address it came from Signed-off-by: Timo Teras <[EMAIL PROTECTED]> --- This is useful for implementing NHRP (and other low level protocols) over NBMA GRE tunnels. Posted about a week ago, but got no reply. Could someone comment on this? Or commit it? Thanks. Your mailer mangled tabs, it won't apply like this. Try sending to yourself for testing, then repost when it works properly. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
When GRE tunnel is in NBMA mode, this patch allows an application to use a PF_PACKET socket to: - send a packet to specific NBMA address with sendto() - use recvfrom() to receive packet and check which NBMA address it came from Signed-off-by: Timo Teras <[EMAIL PROTECTED]> --- This is useful for implementing NHRP (and other low level protocols) over NBMA GRE tunnels. Posted about a week ago, but got no reply. Could someone comment on this? Or commit it? Thanks. net/ipv4/ip_gre.c | 12 +++- 1 files changed, 11 insertions(+), 1 deletions(-) diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index f151900..b1e3816 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -1033,7 +1033,6 @@ static int ipgre_tunnel_change_mtu(struct net_device *dev, int new_mtu) return 0; } -#ifdef CONFIG_NET_IPGRE_BROADCAST /* Nice toy. Unfortunately, useless in real life :-) It allows to construct virtual multiprotocol broadcast "LAN" over the Internet, provided multicast routing is tuned. @@ -1092,10 +1091,19 @@ static int ipgre_header(struct sk_buff *skb, struct net_device *dev, return -t->hlen; } +static int ipgre_header_parse(const struct sk_buff *skb, unsigned char *haddr) +{ + struct iphdr *iph = (struct iphdr *) skb_mac_header(skb); + memcpy(haddr, &iph->saddr, 4); + return 4; +} + static const struct header_ops ipgre_header_ops = { .create = ipgre_header, + .parse = ipgre_header_parse, }; +#ifdef CONFIG_NET_IPGRE_BROADCAST static int ipgre_open(struct net_device *dev) { struct ip_tunnel *t = netdev_priv(dev); @@ -1197,6 +1205,8 @@ static int ipgre_tunnel_init(struct net_device *dev) dev->stop = ipgre_close; } #endif + } else { + dev->header_ops = &ipgre_header_ops; } if (!tdev && tunnel->parms.link) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html