*/
INTERFACE,
+ /**
+ * bond group binding is after interfaces but before
+ * anything else
+ */
+ BOND_BINDING,
+
/**
* Tunnel or virtual interfaces next
*/
/**
* Destructor
*/
- ~rc_t();
+ ~rc_t() = default;
/**
* The value un-set
*/
const static rc_t OK;
- /**
- * HW write is in progress. Also used for the 'want' events
- * that never complete
- */
- const static rc_t INPROGRESS;
-
/**
* HW write reported invalid input
*/
const static direction_t OUTPUT;
};
+/**
+ * Output ostream for direction_t
+ */
+std::ostream& operator<<(std::ostream& os, const direction_t& dir);
+
+/**
+ * Feature Ethertype
+ */
+struct ethertype_t : public enum_base<ethertype_t>
+{
+ /**
+ * Constructor
+ */
+ ethertype_t(int v, const std::string s);
+
+ /**
+ * Destructor
+ */
+ ~ethertype_t() = default;
+
+ /**
+ * Ethertype Arp
+ */
+ const static ethertype_t ARP;
+
+ /**
+ * Ethertype FCoE
+ */
+ const static ethertype_t FCOE;
+
+ /**
+ * Ethertype IPv4
+ */
+ const static ethertype_t IPV4;
+
+ /**
+ * Ethertype Ipv6
+ */
+ const static ethertype_t IPV6;
+
+ /**
+ * Ethertype MAC Security
+ */
+ const static ethertype_t MAC_SECURITY;
+
+ /**
+ * Ethertype MPLS unicast
+ */
+ const static ethertype_t MPLS_UNICAST;
+
+ /**
+ * Ethertype TRILL
+ */
+ const static ethertype_t TRILL;
+
+ /**
+ * Ethertype Unspecified
+ */
+ const static ethertype_t UNSPECIFIED;
+
+ /**
+ * Get the ethertype from the numeric value
+ */
+ static const ethertype_t& from_numeric_val(uint16_t numeric);
+};
+
+/**
+ * Output ostream for ethertype_t
+ */
+std::ostream& operator<<(std::ostream& os, const ethertype_t& eth);
+
/**
* A type declaration of an interface handle in VPP
*/
*/
uint32_t value() const;
+ /**
+ * reset the value of the handle to ~0
+ */
+ void reset();
+
private:
/**
* VPP's handle value
struct mac_address_t
{
mac_address_t(uint8_t bytes[6]);
+ mac_address_t(const std::string& str);
mac_address_t(std::initializer_list<uint8_t> bytes);
/**
* Convert to byte array