[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [patch] netfront: arp code needs CONFIG_INET



drivers/built-in.o: In function 
`send_fake_arp':drivers/xen/netfront/netfront.c:568: undefined reference to 
`inet_select_addr'
:drivers/xen/netfront/netfront.c:574: undefined reference to `arp_create'
drivers/built-in.o: In function 
`netif_init':drivers/xen/netfront/netfront.c:2199: undefined reference to 
`register_inetaddr_notifier'

In order for arp_create to exist CONFIG_INET is needed.
I've taken the approach of surrounding all the functionality
that depents on arp_create() with #if CONFIG_INET.

An alternate approach would be to make sure that Kconfig
enables CONFIG_INET if CONFIG_XEN_NETDEV_FRONTEND is enabled
which would likely mean that CONFIG_INET would always be enabled
if CONFIG_NET and CONFIG_XEN are enabled.

Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>

Index: linux-2.6.18-xen.hg/drivers/xen/netfront/netfront.c
===================================================================
--- linux-2.6.18-xen.hg.orig/drivers/xen/netfront/netfront.c    2007-10-31 
18:01:33.000000000 +0900
+++ linux-2.6.18-xen.hg/drivers/xen/netfront/netfront.c 2007-10-31 
18:01:52.000000000 +0900
@@ -561,6 +561,7 @@ static void backend_changed(struct xenbu
  */
 static int send_fake_arp(struct net_device *dev)
 {
+#ifdef CONFIG_INET
        struct sk_buff *skb;
        u32             src_ip, dst_ip;
 
@@ -579,6 +580,9 @@ static int send_fake_arp(struct net_devi
                return -ENOMEM;
 
        return dev_queue_xmit(skb);
+#else
+       return -ENODEV;
+#endif
 }
 
 static inline int netfront_tx_slot_available(struct netfront_info *np)
@@ -2098,6 +2102,7 @@ static struct net_device * __devinit cre
        return ERR_PTR(err);
 }
 
+#ifdef CONFIG_INET
 /*
  * We use this notifier to send out a fake ARP reply to reset switches and
  * router ARP caches when an IP interface is brought up on a VIF.
@@ -2114,6 +2119,7 @@ inetdev_notify(struct notifier_block *th
 
        return NOTIFY_DONE;
 }
+#endif
 
 
 static void netif_disconnect_backend(struct netfront_info *info)
@@ -2168,11 +2174,13 @@ static struct xenbus_driver netfront = {
 };
 
 
+#ifdef CONFIG_INET
 static struct notifier_block notifier_inetdev = {
        .notifier_call  = inetdev_notify,
        .next           = NULL,
        .priority       = 0
 };
+#endif
 
 static int __init netif_init(void)
 {
@@ -2196,7 +2204,9 @@ static int __init netif_init(void)
 
        IPRINTK("Initialising virtual ethernet driver.\n");
 
+#ifdef CONFIG_INET
        (void)register_inetaddr_notifier(&notifier_inetdev);
+#endif
 
        return xenbus_register_frontend(&netfront);
 }
@@ -2208,7 +2218,9 @@ static void __exit netif_exit(void)
        if (is_initial_xendomain())
                return;
 
+#ifdef CONFIG_INET
        unregister_inetaddr_notifier(&notifier_inetdev);
+#endif
 
        return xenbus_unregister_driver(&netfront);
 }

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.