X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpackets.h;h=e550be0ba9bf34bcf698ebeddb28ff8081a63083;hb=aabf5352bbf7e6fdc3d8da9f7f0b2e268da6ea68;hp=c1d404d45b538dabbc4173e02561bc0670e5e0d3;hpb=38f7147c3e7310ab3ea87420e120e2b1f2268975;p=openvswitch diff --git a/lib/packets.h b/lib/packets.h index c1d404d4..e550be0b 100644 --- a/lib/packets.h +++ b/lib/packets.h @@ -135,8 +135,7 @@ static inline void eth_addr_nicira_random(uint8_t ea[ETH_ADDR_LEN]) bool eth_addr_is_reserved(const uint8_t ea[ETH_ADDR_LEN]); bool eth_addr_from_string(const char *, uint8_t ea[ETH_ADDR_LEN]); -void compose_benign_packet(struct ofpbuf *, - const uint8_t eth_src[ETH_ADDR_LEN]); +void compose_rarp(struct ofpbuf *, const uint8_t eth_src[ETH_ADDR_LEN]); void eth_push_vlan(struct ofpbuf *, ovs_be16 tci); void eth_pop_vlan(struct ofpbuf *); @@ -178,10 +177,14 @@ void eth_addr_bitand(const uint8_t src[ETH_ADDR_LEN], #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 +#define ETH_TYPE_MPLS 0x8847 +#define ETH_TYPE_MPLS_MCAST 0x8848 /* Minimum value for an Ethernet type. Values below this are IEEE 802.2 frame * lengths. */ @@ -228,25 +231,6 @@ struct llc_snap_header { } __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 @@ -338,7 +322,15 @@ void ip_format_masked(ovs_be32 ip, ovs_be32 mask, struct ds *); #define IP_IHL(ip_ihl_ver) ((ip_ihl_ver) & 15) #define IP_IHL_VER(ihl, ver) (((ver) << 4) | (ihl)) +#ifndef IPPROTO_SCTP +#define IPPROTO_SCTP 132 +#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 @@ -422,6 +414,7 @@ BUILD_ASSERT_DECL(TCP_HEADER_LEN == sizeof(struct tcp_header)); #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 {