From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrei Warkentin Subject: [PATCHv3 1/3] NETPOLL: Extend rx_hook support. Date: Sun, 26 Feb 2012 22:30:09 -0500 Message-ID: <1330313411-845-2-git-send-email-andrey.warkentin@gmail.com> References: <1330137851-4716-1-git-send-email-andrey.warkentin@gmail.com> <1330313411-845-1-git-send-email-andrey.warkentin@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kgdb-bugreport@lists.sourceforge.net, Matt Mackall , Andrei Warkentin , Andrei Warkentin , Jason Wessel To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Return-path: In-Reply-To: <1330313411-845-1-git-send-email-andrey.warkentin@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kgdb-bugreport-bounces@lists.sourceforge.net List-Id: netdev.vger.kernel.org From: Andrei Warkentin Pass down source information to rx_hook, useful for accepting connections from unspecified clients. Cc: kgdb-bugreport@lists.sourceforge.net Cc: Jason Wessel Cc: Matt Mackall Signed-off-by: Andrei Warkentin Signed-off-by: Andrei Warkentin --- include/linux/netpoll.h | 10 +++++++++- net/core/netpoll.c | 10 ++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h index 5dfa091..9a9cfa1 100644 --- a/include/linux/netpoll.h +++ b/include/linux/netpoll.h @@ -11,12 +11,19 @@ #include #include #include +#include +#include +#include struct netpoll { struct net_device *dev; char dev_name[IFNAMSIZ]; const char *name; - void (*rx_hook)(struct netpoll *, int, char *, int); + void (*rx_hook)(struct netpoll *, + u8 *h_source, + __be32 saddr, + struct udphdr *, + char *, int); __be32 local_ip, remote_ip; u16 local_port, remote_port; @@ -40,6 +47,7 @@ struct netpoll_info { struct netpoll *netpoll; }; +void netpoll_poll_dev(struct net_device *dev); void netpoll_send_udp(struct netpoll *np, const char *msg, int len); void netpoll_print_options(struct netpoll *np); int netpoll_parse_options(struct netpoll *np, char *opt); diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 3d84fb9..c182bb2 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -26,8 +26,6 @@ #include #include #include -#include -#include #include #include @@ -189,7 +187,7 @@ static void service_arp_queue(struct netpoll_info *npi) } } -static void netpoll_poll_dev(struct net_device *dev) +void netpoll_poll_dev(struct net_device *dev) { const struct net_device_ops *ops; @@ -615,9 +613,9 @@ int __netpoll_rx(struct sk_buff *skb) if (np->local_port && np->local_port != ntohs(uh->dest)) continue; - np->rx_hook(np, ntohs(uh->source), - (char *)(uh+1), - ulen - sizeof(struct udphdr)); + np->rx_hook(np, eth_hdr(skb)->h_source, + iph->saddr, uh, (char *)(uh+1), + ulen - sizeof(struct udphdr)); hits++; } -- 1.7.8.3 ------------------------------------------------------------------------------ Try before you buy = See our experts in action! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-dev2