#define ETH_TYPE_IP 0x0800
#define ETH_TYPE_ARP 0x0806
-#define ETH_TYPE_VLAN 0x8100
+#define ETH_TYPE_VLAN_8021Q 0x8100
+#define ETH_TYPE_VLAN ETH_TYPE_VLAN_8021Q
+#define ETH_TYPE_VLAN_8021AD 0x88a8
#define ETH_TYPE_IPV6 0x86dd
#define ETH_TYPE_LACP 0x8809
#define ETH_TYPE_RARP 0x8035
} __attribute__((packed));
BUILD_ASSERT_DECL(LLC_SNAP_HEADER_LEN == sizeof(struct llc_snap_header));
-#define ARP_HTYPE_ETH 0x0001
-#define RARP_REQUEST_REVERSE 0x0003
-
-#define RARP_HEADER_LEN 28
-/* RARP header only for Ethernet-IP. */
-struct rarp_header {
- ovs_be16 hw_addr_space; /* ARP_HTYPE_ETH. */
- ovs_be16 proto_addr_space; /* ETH_TYPE_IP. */
- uint8_t hw_addr_length; /* ETH_ADDR_LEN. */
- uint8_t proto_addr_length; /* IPV4_ADDR_LEN. */
- ovs_be16 opcode; /* RARP_REQUEST_REVERSE. */
- uint8_t src_hw_addr[ETH_ADDR_LEN];
- ovs_be32 src_proto_addr;
- uint8_t target_hw_addr[ETH_ADDR_LEN];
- ovs_be32 target_proto_addr;
-} __attribute__((packed));
-BUILD_ASSERT_DECL(RARP_HEADER_LEN == sizeof(struct rarp_header));
-
-
#define VLAN_VID_MASK 0x0fff
#define VLAN_VID_SHIFT 0
#endif
/* TOS fields. */
+#define IP_ECN_NOT_ECT 0x0
+#define IP_ECN_ECT_1 0x01
+#define IP_ECN_ECT_0 0x02
+#define IP_ECN_CE 0x03
#define IP_ECN_MASK 0x03
#define IP_DSCP_MASK 0xfc
#define ARP_PRO_IP 0x0800
#define ARP_OP_REQUEST 1
#define ARP_OP_REPLY 2
+#define ARP_OP_RARP 3
#define ARP_ETH_HEADER_LEN 28
struct arp_eth_header {
unsigned int oui, uint16_t snap_type, size_t size);
void packet_set_ipv4(struct ofpbuf *, ovs_be32 src, ovs_be32 dst, uint8_t tos,
uint8_t ttl);
+void packet_set_ipv6(struct ofpbuf *, uint8_t proto, const ovs_be32 src[4],
+ const ovs_be32 dst[4], uint8_t tc,
+ ovs_be32 fl, uint8_t hlmit);
void packet_set_tcp_port(struct ofpbuf *, ovs_be16 src, ovs_be16 dst);
void packet_set_udp_port(struct ofpbuf *, ovs_be16 src, ovs_be16 dst);