mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
netpoll: prepare for ipv6
This patch adjusts some struct and functions, to prepare for supporting IPv6. Cc: David S. Miller <davem@davemloft.net> Signed-off-by: Cong Wang <amwang@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
0c7768a098
commit
b7394d2429
@@ -269,12 +269,14 @@ static ssize_t show_remote_port(struct netconsole_target *nt, char *buf)
|
||||
|
||||
static ssize_t show_local_ip(struct netconsole_target *nt, char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%pI4\n", &nt->np.local_ip);
|
||||
if (!nt->np.ipv6)
|
||||
return snprintf(buf, PAGE_SIZE, "%pI4\n", &nt->np.local_ip);
|
||||
}
|
||||
|
||||
static ssize_t show_remote_ip(struct netconsole_target *nt, char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%pI4\n", &nt->np.remote_ip);
|
||||
if (!nt->np.ipv6)
|
||||
return snprintf(buf, PAGE_SIZE, "%pI4\n", &nt->np.remote_ip);
|
||||
}
|
||||
|
||||
static ssize_t show_local_mac(struct netconsole_target *nt, char *buf)
|
||||
@@ -410,7 +412,8 @@ static ssize_t store_local_ip(struct netconsole_target *nt,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
nt->np.local_ip = in_aton(buf);
|
||||
if (!strnchr(buf, count, ':'))
|
||||
nt->np.local_ip.ip = in_aton(buf);
|
||||
|
||||
return strnlen(buf, count);
|
||||
}
|
||||
@@ -426,7 +429,8 @@ static ssize_t store_remote_ip(struct netconsole_target *nt,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
nt->np.remote_ip = in_aton(buf);
|
||||
if (!strnchr(buf, count, ':'))
|
||||
nt->np.remote_ip.ip = in_aton(buf);
|
||||
|
||||
return strnlen(buf, count);
|
||||
}
|
||||
|
||||
+11
-2
@@ -12,13 +12,22 @@
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/list.h>
|
||||
|
||||
union inet_addr {
|
||||
__u32 all[4];
|
||||
__be32 ip;
|
||||
__be32 ip6[4];
|
||||
struct in_addr in;
|
||||
struct in6_addr in6;
|
||||
};
|
||||
|
||||
struct netpoll {
|
||||
struct net_device *dev;
|
||||
char dev_name[IFNAMSIZ];
|
||||
const char *name;
|
||||
void (*rx_hook)(struct netpoll *, int, char *, int);
|
||||
|
||||
__be32 local_ip, remote_ip;
|
||||
union inet_addr local_ip, remote_ip;
|
||||
bool ipv6;
|
||||
u16 local_port, remote_port;
|
||||
u8 remote_mac[ETH_ALEN];
|
||||
|
||||
@@ -33,7 +42,7 @@ struct netpoll_info {
|
||||
spinlock_t rx_lock;
|
||||
struct list_head rx_np; /* netpolls that registered an rx_hook */
|
||||
|
||||
struct sk_buff_head arp_tx; /* list of arp requests to reply to */
|
||||
struct sk_buff_head neigh_tx; /* list of neigh requests to reply to */
|
||||
struct sk_buff_head txq;
|
||||
|
||||
struct delayed_work tx_work;
|
||||
|
||||
+222
-176
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user