From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753739Ab2B0DF5 (ORCPT ); Sun, 26 Feb 2012 22:05:57 -0500 Received: from mail-qy0-f174.google.com ([209.85.216.174]:63561 "EHLO mail-qy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753474Ab2B0DFx (ORCPT ); Sun, 26 Feb 2012 22:05:53 -0500 From: Andrei Warkentin To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andrei Warkentin , kgdb-bugreport@lists.sourceforge.net, Jason Wessel , Matt Mackall , Andrei Warkentin Subject: [PATCHv2 1/2] NETPOLL: Extend rx_hook support. Date: Sun, 26 Feb 2012 21:05:36 -0500 Message-Id: <1330308337-21365-2-git-send-email-andrey.warkentin@gmail.com> X-Mailer: git-send-email 1.7.8.3 In-Reply-To: <1330308337-21365-1-git-send-email-andrey.warkentin@gmail.com> References: <1330137851-4716-1-git-send-email-andrey.warkentin@gmail.com> <1330308337-21365-1-git-send-email-andrey.warkentin@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@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