--- batman-adv_master.packet.h 2013-04-25 00:15:01.935181839 +0200 +++ batctl_master.packet.h 2013-04-25 00:15:01.943181703 +0200 @@ -20,10 +20,6 @@ #ifndef _NET_BATMAN_ADV_PACKET_H_ #define _NET_BATMAN_ADV_PACKET_H_
-/** - * enum batadv_packettype - types for batman-adv encapsulated packets - * @BATADV_UNICAST_TVLV: unicast packet carrying TVLV containers - */ enum batadv_packettype { BATADV_IV_OGM = 0x01, BATADV_ICMP = 0x02, @@ -31,9 +27,10 @@ BATADV_BCAST = 0x04, BATADV_VIS = 0x05, BATADV_UNICAST_FRAG = 0x06, + BATADV_TT_QUERY = 0x07, + BATADV_ROAM_ADV = 0x08, BATADV_UNICAST_4ADDR = 0x09, BATADV_CODED = 0x0a, - BATADV_UNICAST_TVLV = 0x0b, };
/** @@ -81,21 +78,17 @@ BATADV_UNI_FRAG_LARGETAIL = BIT(1), };
-/* tt data subtypes */ -#define BATADV_TT_DATA_TYPE_MASK 0x0F +/* TT_QUERY subtypes */ +#define BATADV_TT_QUERY_TYPE_MASK 0x3
-/** - * enum batadv_tt_data_flags - flags for tt data tvlv - * @BATADV_TT_OGM_DIFF: TT diff propagated through OGM - * @BATADV_TT_REQUEST: TT request message - * @BATADV_TT_RESPONSE: TT response message - * @BATADV_TT_FULL_TABLE: contains full table to replace existing table - */ -enum batadv_tt_data_flags { - BATADV_TT_OGM_DIFF = BIT(0), - BATADV_TT_REQUEST = BIT(1), - BATADV_TT_RESPONSE = BIT(2), - BATADV_TT_FULL_TABLE = BIT(4), +enum batadv_tt_query_packettype { + BATADV_TT_REQUEST = 0, + BATADV_TT_RESPONSE = 1, +}; + +/* TT_QUERY flags */ +enum batadv_tt_query_flags { + BATADV_TT_FULL_TABLE = BIT(2), };
/* BATADV_TT_CLIENT flags. @@ -120,22 +113,6 @@ BATADV_CLAIM_TYPE_REQUEST = 0x03, };
-/** - * enum batadv_tvlv_type - tvlv type definitions - * @BATADV_TVLV_GW: gateway tvlv - * @BATADV_TVLV_DAT: distributed arp table tvlv - * @BATADV_TVLV_NC: network coding tvlv - * @BATADV_TVLV_TT: translation table tvlv - * @BATADV_TVLV_ROAM: roaming advertisement tvlv - */ -enum batadv_tvlv_type { - BATADV_TVLV_GW = 0x01, - BATADV_TVLV_DAT = 0x02, - BATADV_TVLV_NC = 0x03, - BATADV_TVLV_TT = 0x04, - BATADV_TVLV_ROAM = 0x05, -}; - /* the destination hardware field in the ARP frame is used to * transport the claim type and the group id */ @@ -154,20 +131,17 @@ */ };
-/** - * struct batadv_ogm_packet - ogm (routing protocol) packet - * @header: common batman packet header - * @tvlv_len: length of tvlv data following the ogm header - */ struct batadv_ogm_packet { struct batadv_header header; uint8_t flags; /* 0x40: DIRECTLINK flag, 0x20 VIS_SERVER flag... */ __be32 seqno; uint8_t orig[ETH_ALEN]; uint8_t prev_sender[ETH_ALEN]; - uint8_t reserved; + uint8_t gw_flags; /* flags related to gateway class */ uint8_t tq; - __be16 tvlv_len; + uint8_t tt_num_changes; + uint8_t ttvn; /* translation table version number */ + __be16 tt_crc; } __packed;
#define BATADV_OGM_HLEN sizeof(struct batadv_ogm_packet) @@ -268,6 +242,43 @@ uint8_t sender_orig[ETH_ALEN]; /* who sent or forwarded this packet */ };
+struct batadv_tt_query_packet { + struct batadv_header header; + /* the flag field is a combination of: + * - TT_REQUEST or TT_RESPONSE + * - TT_FULL_TABLE + */ + uint8_t flags; + uint8_t dst[ETH_ALEN]; + uint8_t src[ETH_ALEN]; + /* the ttvn field is: + * if TT_REQUEST: ttvn that triggered the + * request + * if TT_RESPONSE: new ttvn for the src + * orig_node + */ + uint8_t ttvn; + /* tt_data field is: + * if TT_REQUEST: crc associated with the + * ttvn + * if TT_RESPONSE: table_size + */ + __be16 tt_data; +} __packed; + +struct batadv_roam_adv_packet { + struct batadv_header header; + uint8_t reserved; + uint8_t dst[ETH_ALEN]; + uint8_t src[ETH_ALEN]; + uint8_t client[ETH_ALEN]; +} __packed; + +struct batadv_tt_change { + uint8_t flags; + uint8_t addr[ETH_ALEN]; +} __packed; + /** * struct batadv_coded_packet - network coded packet * @header: common batman packet header and ttl of first included packet @@ -300,104 +311,4 @@ __be16 coded_len; };
-/** - * struct batadv_unicast_tvlv - generic unicast packet with tvlv payload - * @header: common batman packet header - * @reserved: reserved field (for packet alignment) - * @src: address of the source - * @dst: address of the destination - * @tvlv_len: length of tvlv data following the unicast tvlv header - */ -struct batadv_unicast_tvlv_packet { - struct batadv_header header; - uint8_t reserved; - uint8_t dst[ETH_ALEN]; - uint8_t src[ETH_ALEN]; - __be16 tvlv_len; -}; - -/** - * struct batadv_tvlv_hdr - base tvlv header struct - * @long_tvlv: flag indicating whether this is a short tvlv container (max 256 - * bytes) or a long tvlv one (up to ETH_DATA_LEN) - * @type: tvlv container type (see batadv_tvlv_type) - * @version: tvlv container version - */ -struct batadv_tvlv_hdr { -#if defined(__BIG_ENDIAN_BITFIELD) - uint8_t long_tvlv:1; - uint8_t type:7; -#elif defined(__LITTLE_ENDIAN_BITFIELD) - uint8_t type:7; - uint8_t long_tvlv:1; -#else -#error "unknown bitfield endianess" -#endif - uint8_t version; -}; - -/** - * struct batadv_tvlv_short - short tvlv header struct - * @tvlv_hdr: base tvlv header - * @len: tvlv container length (limited to 255 bytes) - */ -struct batadv_tvlv_short { - struct batadv_tvlv_hdr tvlv_hdr; - uint8_t len; -}; - -/** - * struct batadv_tvlv_long - long tvlv header struct - * @tvlv_hdr: base tvlv header - * @len: tvlv container length - */ -struct batadv_tvlv_long { - struct batadv_tvlv_hdr tvlv_hdr; - __be16 len; -}; - -/** - * struct batadv_tvlv_gateway_data - gateway data propagated through gw tvlv - * container - * @bandwidth_down: advertised uplink download bandwidth - * @bandwidth_up: advertised uplink upload bandwidth - */ -struct batadv_tvlv_gateway_data { - uint32_t bandwidth_down; - uint32_t bandwidth_up; -}; - -/** - * struct tvlv_tt_data - tt data propagated through the tt tvlv container - * @flags: translation table flags (see batadv_tt_data_flags) - * @ttvn: translation table version number - * @crc: crc16 checksum of the local translation table - */ -struct batadv_tvlv_tt_data { - uint8_t flags; - uint8_t ttvn; - __be16 crc; -}; - -/** - * struct batadv_tvlv_tt_change - translation table diff data - * @flags: status indicators concerning the non-mesh client (see - * batadv_tt_client_flags) - * @reserved: reserved field - * @addr: mac address of non-mesh client that triggered this tt change - */ -struct batadv_tvlv_tt_change { - uint8_t flags; - uint8_t reserved; - uint8_t addr[ETH_ALEN]; -}; - -/** - * struct batadv_tvlv_roam_adv - roaming advertisement - * @client: mac address of roaming client - */ -struct batadv_tvlv_roam_adv { - uint8_t client[ETH_ALEN]; -}; - #endif /* _NET_BATMAN_ADV_PACKET_H_ */