X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdhcp-client.c;fp=lib%2Fdhcp-client.c;h=4f90781334f80aeaf22fb51f667e40d97ca3c65c;hb=8fef8c7121222233075a03d57db7e0b48d5f6be5;hp=9057121d0d15f242941229844839c1aec0f23493;hpb=d2cd45db48e2713b74c3a31f746f923a72294e46;p=sliver-openvswitch.git diff --git a/lib/dhcp-client.c b/lib/dhcp-client.c index 9057121d0..4f9078133 100644 --- a/lib/dhcp-client.c +++ b/lib/dhcp-client.c @@ -411,7 +411,7 @@ dhclient_configure_netdev(struct dhclient *cli) } if (!error && router.s_addr) { - error = netdev_add_router(router); + error = netdev_add_router(cli->netdev, router); if (error) { VLOG_ERR("failed to add default route to "IP_FMT" on %s: %s", IP_ARGS(&router), netdev_get_name(cli->netdev), @@ -882,7 +882,7 @@ dhclient_msg_init(struct dhclient *cli, enum dhcp_msg_type type, msg->xid = cli->xid; msg->secs = cli->secs; msg->type = type; - memcpy(msg->chaddr, netdev_get_etheraddr(cli->netdev), ETH_ADDR_LEN); + netdev_get_etheraddr(cli->netdev, msg->chaddr); } /* If time goes backward this returns a large number, which makes it look like @@ -905,9 +905,13 @@ timeout(struct dhclient *cli, unsigned int secs) static bool do_receive_msg(struct dhclient *cli, struct dhcp_msg *msg) { + uint8_t cli_mac[ETH_ADDR_LEN]; struct ofpbuf b; + int mtu; - ofpbuf_init(&b, netdev_get_mtu(cli->netdev) + VLAN_ETH_HEADER_LEN); + netdev_get_mtu(cli->netdev, &mtu); + ofpbuf_init(&b, mtu + VLAN_ETH_HEADER_LEN); + netdev_get_etheraddr(cli->netdev, cli_mac); for (; cli->received < 50; cli->received++) { const struct ip_header *ip; const struct dhcp_header *dhcp; @@ -925,8 +929,7 @@ do_receive_msg(struct dhclient *cli, struct dhcp_msg *msg) || flow.nw_proto != IP_TYPE_UDP || flow.tp_dst != htons(DHCP_CLIENT_PORT) || !(eth_addr_is_broadcast(flow.dl_dst) - || eth_addr_equals(flow.dl_dst, - netdev_get_etheraddr(cli->netdev)))) { + || eth_addr_equals(flow.dl_dst, cli_mac))) { continue; } @@ -977,7 +980,7 @@ do_send_msg(struct dhclient *cli, const struct dhcp_msg *msg) dhcp_assemble(msg, &b); - memcpy(eh.eth_src, netdev_get_etheraddr(cli->netdev), ETH_ADDR_LEN); + netdev_get_etheraddr(cli->netdev, eh.eth_src); memcpy(eh.eth_dst, eth_addr_broadcast, ETH_ADDR_LEN); eh.eth_type = htons(ETH_TYPE_IP);