netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address
@ 2007-10-23 14:31 Timo Teräs
  2007-10-23 14:33 ` Patrick McHardy
  0 siblings, 1 reply; 13+ messages in thread
From: Timo Teräs @ 2007-10-23 14:31 UTC (permalink / raw)
  To: davem, netdev; +Cc: kuznet

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 <timo.teras@iki.fi>

---

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)



^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2007-12-20  8:11 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-23 14:31 [PATCH RESEND] ip_gre: sendto/recvfrom NBMA address Timo Teräs
2007-10-23 14:33 ` Patrick McHardy
2007-10-23 15:08   ` Timo Teräs
2007-10-23 15:57   ` Timo Teräs
2007-10-23 16:10     ` Patrick McHardy
2007-10-23 19:03     ` Alexey Kuznetsov
2007-10-24  3:32       ` David Miller
2007-10-23 20:20     ` Alexey Kuznetsov
2007-10-24  5:54       ` Timo Teräs
2007-10-24 10:08         ` Alexey Kuznetsov
2007-12-18 13:59           ` [RFC][PATCH][IPV4] ip_gre: use skb->{mac,network}_header consistently Timo Teräs
2007-12-19 18:10             ` [PATCH][IPV4] ip_gre: set mac_header correctly in receive path Timo Teräs
2007-12-20  8:11               ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).