X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fnetdev-provider.h;h=d5a30c809a01daf3f48d93b01c218e4b03b1aec6;hb=efb80167f7ebf51456df2940e3b42376ecbceb61;hp=b8f65291927c2d334d988c4788c96f31d9dac288;hpb=9b02078077b62e4277e84c7f39382ce09986cf6b;p=openvswitch diff --git a/lib/netdev-provider.h b/lib/netdev-provider.h index b8f65291..d5a30c80 100644 --- a/lib/netdev-provider.h +++ b/lib/netdev-provider.h @@ -144,16 +144,6 @@ struct netdev_class { /* Closes 'netdev'. */ void (*close)(struct netdev *netdev); - - /* Enumerates the names of all network devices of this class. - * - * The caller has already initialized 'all_names' and might already have - * added some names to it. This function should not disturb any existing - * names in 'all_names'. - * - * If this netdev class does not support enumeration, this may be a null - * pointer. */ - int (*enumerate)(struct sset *all_names); /* ## ----------------- ## */ /* ## Receiving Packets ## */ @@ -182,6 +172,9 @@ struct netdev_class { * packet, otherwise a negative errno value. Returns -EAGAIN immediately * if no packet is ready to be received. * + * Returns -EMSGSIZE, and discards the packet, if the received packet is + * longer than 'size' bytes. + * * This function can only be expected to return a packet if ->listen() has * been called successfully. * @@ -248,13 +241,15 @@ struct netdev_class { * bytes for Ethernet devices. * * If 'netdev' does not have an MTU (e.g. as some tunnels do not), then - * this function should return EOPNOTSUPP. */ + * this function should return EOPNOTSUPP. This function may be set to + * null if it would always return EOPNOTSUPP. */ int (*get_mtu)(const struct netdev *netdev, int *mtup); /* Sets 'netdev''s MTU to 'mtu'. * * If 'netdev' does not have an MTU (e.g. as some tunnels do not), then - * this function should return EOPNOTSUPP. */ + * this function should return EOPNOTSUPP. This function may be set to + * null if it would always return EOPNOTSUPP. */ int (*set_mtu)(const struct netdev *netdev, int mtu); /* Returns the ifindex of 'netdev', if successful, as a positive number. @@ -278,6 +273,12 @@ struct netdev_class { */ int (*get_carrier)(const struct netdev *netdev, bool *carrier); + /* Returns the number of times 'netdev''s carrier has changed since being + * initialized. + * + * If null, callers will assume the number of carrier resets is zero. */ + long long int (*get_carrier_resets)(const struct netdev *netdev); + /* Forces ->get_carrier() to poll 'netdev''s MII registers for link status * instead of checking 'netdev''s carrier. 'netdev''s MII registers will * be polled once ever 'interval' milliseconds. If 'netdev' does not @@ -322,17 +323,6 @@ struct netdev_class { * support configuring advertisements. */ int (*set_advertisements)(struct netdev *netdev, uint32_t advertise); - /* 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. - * - * Returns ENOENT if 'netdev' is a network device that is not a - * VLAN device. - * - * This function should be set to null if it doesn't make any sense for - * your network device (it probably doesn't). */ - int (*get_vlan_vid)(const struct netdev *netdev, int *vlan_vid); - /* Attempts to set input rate limiting (policing) policy, such that up to * 'kbits_rate' kbps of traffic is accepted, with a maximum accumulative * burst size of 'kbits' kb.