X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fnetwork.c;h=cf340dad86b6540c712c9110c30b2b38babe8650;hp=bc7e186a1921e8531bb2fd37ed026f5e47e5977e;hb=23f75c74abde1b336e470d3febe68a45bfa68c5b;hpb=d67d5beceef94686818ce264b2ca93f82b66e8f4 diff --git a/discover/network.c b/discover/network.c index bc7e186..cf340da 100644 --- a/discover/network.c +++ b/discover/network.c @@ -220,6 +220,8 @@ static void configure_interface_dhcp(struct interface *interface) "-R", "-n", "-O", "pxeconffile", + "-O", "pxepathprefix", + "-x", "0x5d:000a", "-p", pidfile, "-i", interface->name, NULL, @@ -416,14 +418,15 @@ static int network_handle_nlmsg(struct network *network, struct nlmsghdr *nlmsg) memcpy(interface->hwaddr, ifaddr, sizeof(interface->hwaddr)); strncpy(interface->name, ifname, sizeof(interface->name) - 1); add_interface(network, interface); - - /* tell the sysinfo code about this interface */ - if (strcmp(interface->name, "lo")) - system_info_register_interface( - sizeof(interface->hwaddr), - interface->hwaddr, interface->name); } + /* notify the sysinfo code about changes to this interface */ + if (strcmp(interface->name, "lo")) + system_info_register_interface( + sizeof(interface->hwaddr), + interface->hwaddr, interface->name, + info->ifi_flags & IFF_LOWER_UP); + configure_interface(network, interface, info->ifi_flags & IFF_UP, info->ifi_flags & IFF_LOWER_UP); @@ -581,8 +584,13 @@ int network_shutdown(struct network *network) if (network->waiter) waiter_remove(network->waiter); - list_for_each_entry(&network->interfaces, interface, list) + list_for_each_entry(&network->interfaces, interface, list) { + if (interface->state == IFSTATE_IGNORED) + continue; + if (!strcmp(interface->name, "lo")) + continue; interface_down(interface); + } close(network->netlink_sd); talloc_free(network);