Simon Horman
2007-Oct-31 09:15 UTC
[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@verge.net.au> 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(¬ifier_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(¬ifier_inetdev); +#endif return xenbus_unregister_driver(&netfront); } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel