[netfilter-cvslog] r3292 - in trunk/nfsim: core/ipv4 tools
rusty at netfilter.org
rusty at netfilter.org
Sun Nov 21 05:12:07 CET 2004
Author: rusty at netfilter.org
Date: 2004-11-21 05:12:06 +0100 (Sun, 21 Nov 2004)
New Revision: 3292
Modified:
trunk/nfsim/core/ipv4/ipv4.c
trunk/nfsim/core/ipv4/ipv4.h
trunk/nfsim/tools/ifconfig.c
Log:
Initialize route->gateway on creation.
Call notifiers on ifconfig commands.
Modified: trunk/nfsim/core/ipv4/ipv4.c
===================================================================
--- trunk/nfsim/core/ipv4/ipv4.c 2004-11-20 18:47:40 UTC (rev 3291)
+++ trunk/nfsim/core/ipv4/ipv4.c 2004-11-21 04:12:06 UTC (rev 3292)
@@ -50,6 +50,7 @@
route->netmask = indev->ifa_list->ifa_mask;
route->network = indev->ifa_list->ifa_address & indev->ifa_list->ifa_mask;
route->interface = indev->dev;
+ route->gateway = indev->ifa_list->ifa_address;
list_add_tail(&route->entry, &routes);
}
@@ -95,7 +96,13 @@
return notifier_chain_unregister(&inetaddr_chain, nb);
}
+int __call_inetaddr_notifier(unsigned long val, struct in_ifaddr *ifa)
+{
+ struct notifier_block *nb = inetaddr_chain;
+ return notifier_call_chain(&nb, val, ifa);
+}
+
int ip_rcv_finish(struct sk_buff *skb)
{
if (!skb->dst &&
Modified: trunk/nfsim/core/ipv4/ipv4.h
===================================================================
--- trunk/nfsim/core/ipv4/ipv4.h 2004-11-20 18:47:40 UTC (rev 3291)
+++ trunk/nfsim/core/ipv4/ipv4.h 2004-11-21 04:12:06 UTC (rev 3292)
@@ -527,6 +527,7 @@
int register_inetaddr_notifier(struct notifier_block *nb);
int unregister_inetaddr_notifier(struct notifier_block *nb);
+int __call_inetaddr_notifier(unsigned long, struct in_ifaddr *ifa);
static inline int register_netdevice_notifier(struct notifier_block *nb)
{
Modified: trunk/nfsim/tools/ifconfig.c
===================================================================
--- trunk/nfsim/tools/ifconfig.c 2004-11-20 18:47:40 UTC (rev 3291)
+++ trunk/nfsim/tools/ifconfig.c 2004-11-21 04:12:06 UTC (rev 3292)
@@ -70,6 +70,7 @@
return false;
}
ifaddr->ifa_address = ifaddr->ifa_local;
+ __call_inetaddr_notifier(NETDEV_UP, ifaddr);
}
if (!--argc)
@@ -131,6 +132,7 @@
indev->ifa_list = talloc(indev, struct in_ifaddr);
indev->ifa_list->ifa_next = NULL;
+ indev->ifa_list->ifa_dev = indev;
indev->dev = dev;
if (!set_device(dev, argc, argv)) {
@@ -146,6 +148,7 @@
static bool ifconfig(int argc, char **argv)
{
struct net_device *dev;
+ struct in_device *indev;
if (argc == 1) {
list_for_each_entry(dev, &interfaces, entry)
@@ -182,12 +185,15 @@
return ifshow(dev);
}
+ /* IP address either going down or changing. */
+ indev = dev->ip_ptr;
+ __call_inetaddr_notifier(NETDEV_DOWN, indev->ifa_list);
+
if (argc == 3 && !strncmp(argv[2], "down", 4)) {
list_del(&dev->entry);
talloc_free(dev);
return true;
}
-
return set_device(dev, argc-2, argv+2);
}
More information about the netfilter-cvslog
mailing list