diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-12-16 13:42:20 +0100 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2019-12-16 17:06:47 +0100 |
commit | bf5726c5afde540bb3fede21745d127b24ce427b (patch) | |
tree | e81e4b5d7ad2e4f409e1b4152c7f99d5cd5fa8ae /include/proto.h | |
parent | 343a51702656a6476e37cfb84609a82155c7fc5e (diff) |
proto: add proto_desc_id enumeration
This allows to uniquely identify the protocol description.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'include/proto.h')
-rw-r--r-- | include/proto.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/proto.h b/include/proto.h index fab48c1b..1771ba8e 100644 --- a/include/proto.h +++ b/include/proto.h @@ -63,10 +63,34 @@ struct proto_hdr_template { #define PROTO_UPPER_MAX 16 #define PROTO_HDRS_MAX 20 +enum proto_desc_id { + PROTO_DESC_UNKNOWN = 0, + PROTO_DESC_AH, + PROTO_DESC_ESP, + PROTO_DESC_COMP, + PROTO_DESC_ICMP, + PROTO_DESC_IGMP, + PROTO_DESC_UDP, + PROTO_DESC_UDPLITE, + PROTO_DESC_TCP, + PROTO_DESC_DCCP, + PROTO_DESC_SCTP, + PROTO_DESC_TH, + PROTO_DESC_IP, + PROTO_DESC_IP6, + PROTO_DESC_ICMPV6, + PROTO_DESC_ARP, + PROTO_DESC_VLAN, + PROTO_DESC_ETHER, + __PROTO_DESC_MAX +}; +#define PROTO_DESC_MAX (__PROTO_DESC_MAX - 1) + /** * struct proto_desc - protocol header description * * @name: protocol name + * @id: protocol identifier * @base: header base * @checksum_key: key of template containing checksum * @protocol_key: key of template containing upper layer protocol description @@ -77,6 +101,7 @@ struct proto_hdr_template { */ struct proto_desc { const char *name; + enum proto_desc_id id; enum proto_bases base; unsigned int checksum_key; unsigned int protocol_key; @@ -160,6 +185,8 @@ extern const struct proto_desc *proto_find_upper(const struct proto_desc *base, extern int proto_find_num(const struct proto_desc *base, const struct proto_desc *desc); +extern const struct proto_desc *proto_find_desc(enum proto_desc_id desc_id); + enum eth_hdr_fields { ETHHDR_INVALID, ETHHDR_DADDR, |