X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fnetdev.c;h=eff6e4cb7259372c63f528ced1c322d113723c09;hb=999fba59afd9c8eef30d30a6fd2f490b85c24665;hp=9f15b72a6de04e9b5b38b63e75f25919b92178a7;hpb=65c3058c22803c7e8d8fd0bfbb84fe27456fb137;p=openvswitch diff --git a/lib/netdev.c b/lib/netdev.c index 9f15b72a..eff6e4cb 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -692,6 +692,26 @@ netdev_set_in4(struct netdev *netdev, struct in_addr addr, struct in_addr mask) : EOPNOTSUPP); } +/* Obtains ad IPv4 address from device name and save the address in + * in4. Returns 0 if successful, otherwise a positive errno value. + */ +int +netdev_get_in4_by_name(const char *device_name, struct in_addr *in4) +{ + struct netdev *netdev; + int error; + + error = netdev_open(device_name, "system", &netdev); + if (error) { + in4->s_addr = htonl(0); + return error; + } + + error = netdev_get_in4(netdev, in4, NULL); + netdev_close(netdev); + return error; +} + /* Adds 'router' as a default IP gateway for the TCP/IP stack that corresponds * to 'netdev'. */ int @@ -1250,24 +1270,6 @@ netdev_change_seq(const struct netdev *netdev) { return netdev_get_dev(netdev)->netdev_class->change_seq(netdev); } - -/* If 'netdev' is a VLAN network device (e.g. one created with vconfig(8)), - * sets '*vlan_vid' to the VLAN VID associated with that device and returns 0. - * Otherwise returns a errno value (specifically ENOENT if 'netdev_name' is the - * name of a network device that is not a VLAN device) and sets '*vlan_vid' to - * -1. */ -int -netdev_get_vlan_vid(const struct netdev *netdev, int *vlan_vid) -{ - int error = (netdev_get_dev(netdev)->netdev_class->get_vlan_vid - ? netdev_get_dev(netdev)->netdev_class->get_vlan_vid(netdev, - vlan_vid) - : ENOENT); - if (error) { - *vlan_vid = 0; - } - return error; -} /* Initializes 'netdev_dev' as a netdev device named 'name' of the specified * 'netdev_class'. This function is ordinarily called from a netdev provider's