X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fflow.h;h=a40073a0b67a7ec65842ff2bdce2bf9e09aab7aa;hb=76f1c218bd84e44666c5a0ae54d543dbce42c376;hp=21df5fbee1a784fba7846f768cd0be2d9985d961;hpb=685a51a5b89750cead1b2934c2079d2bb9c52a4a;p=openvswitch diff --git a/datapath/flow.h b/datapath/flow.h index 21df5fbe..a40073a0 100644 --- a/datapath/flow.h +++ b/datapath/flow.h @@ -107,10 +107,23 @@ u64 flow_used_time(unsigned long flow_jiffies); u32 flow_hash(const struct sw_flow_key *); int flow_cmp(const struct tbl_node *, void *target); -/* By my calculations currently the longest valid nlattr-formatted flow key is - * 80 bytes long, so this leaves some safety margin. +/* Upper bound on the length of a nlattr-formatted flow key. The longest + * nlattr-formatted flow key would be: + * + * struct pad nl hdr total + * ------ --- ------ ----- + * ODP_KEY_ATTR_TUN_ID 8 -- 4 12 + * ODP_KEY_ATTR_IN_PORT 4 -- 4 8 + * ODP_KEY_ATTR_ETHERNET 12 -- 4 16 + * ODP_KEY_ATTR_8021Q 4 -- 4 8 + * ODP_KEY_ATTR_ETHERTYPE 2 2 4 8 + * ODP_KEY_ATTR_IPV6 34 2 4 40 + * ODP_KEY_ATTR_ICMPV6 2 2 4 8 + * ODP_KEY_ATTR_ND 28 -- 4 32 + * ------------------------------------------------- + * total 132 */ -#define FLOW_BUFSIZE 96 +#define FLOW_BUFSIZE 132 int flow_to_nlattrs(const struct sw_flow_key *, struct sk_buff *); int flow_from_nlattrs(struct sw_flow_key *swkey, const struct nlattr *);