Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 53467
b: refs/heads/master
c: dc1f6bf
h: refs/heads/master
i:
  53465: 9ecfc82
  53463: 4fef0bc
v: v3
  • Loading branch information
Patrick McHardy authored and David S. Miller committed May 3, 2007
1 parent 1b5c76f commit 2e5d37b
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 476 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4e9cac2ba437fcb093c7417b1cd91a77ebd1756a
refs/heads/master: dc1f6bff6a9d6733a07b9b97905bc824c055e8f4
2 changes: 1 addition & 1 deletion trunk/fs/afs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ kafs-objs := \
security.o \
server.o \
super.o \
use-rtnetlink.o \
netdevices.o \
vlclient.o \
vlocation.o \
vnode.o \
Expand Down
1 change: 0 additions & 1 deletion trunk/fs/afs/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,6 @@ struct afs_permits {
* record of one of a system's set of network interfaces
*/
struct afs_interface {
unsigned index; /* interface index */
struct in_addr address; /* IPv4 address bound to interface */
struct in_addr netmask; /* netmask applied to address */
unsigned mtu; /* MTU of interface */
Expand Down
54 changes: 54 additions & 0 deletions trunk/fs/afs/netdevices.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/* AFS network device helpers
*
* Copyright (c) 2007 Patrick McHardy <kaber@trash.net>
*/

#include <linux/string.h>
#include <linux/rtnetlink.h>
#include <linux/inetdevice.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h>
#include "internal.h"

int afs_get_MAC_address(u8 mac[ETH_ALEN])
{
struct net_device *dev;
int ret = -ENODEV;

rtnl_lock();
dev = __dev_getfirstbyhwtype(ARPHRD_ETHER);
if (dev) {
memcpy(mac, dev->dev_addr, ETH_ALEN);
ret = 0;
}
rtnl_unlock();
return ret;
}

int afs_get_ipv4_interfaces(struct afs_interface *bufs, size_t maxbufs,
bool wantloopback)
{
struct net_device *dev;
struct in_device *idev;
int n = 0;

rtnl_lock();
for (dev = dev_base; dev; dev = dev->next) {
if (dev->type == ARPHRD_LOOPBACK && !wantloopback)
continue;
idev = __in_dev_get_rtnl(dev);
if (!idev)
continue;
for_primary_ifa(idev) {
if (n == maxbufs)
goto out;
bufs[n].address.s_addr = ifa->ifa_address;
bufs[n].netmask.s_addr = ifa->ifa_mask;
bufs[n].mtu = dev->mtu;
n++;
} endfor_ifa(idev)
}
out:
rtnl_unlock();
return n;
}
Loading

0 comments on commit 2e5d37b

Please sign in to comment.