X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fflow.h;h=931d5d7ef3181f3f534edfd94c0c43af71636641;hb=6161d3fd928edf7016abae60f549a135a2f83f09;hp=5bd8c8daa997b0ca43f1fe73fc173e72abeb5b83;hpb=6455100f38e9312346f4d58511595f695d813537;p=openvswitch diff --git a/datapath/flow.h b/datapath/flow.h index 5bd8c8da..931d5d7e 100644 --- a/datapath/flow.h +++ b/datapath/flow.h @@ -1,9 +1,19 @@ /* - * Copyright (c) 2009, 2010, 2011 Nicira Networks. - * Distributed under the terms of the GNU GPL version 2. + * Copyright (c) 2007-2011 Nicira Networks. * - * Significant portions of this file may be copied from parts of the Linux - * kernel, by Linus Torvalds and others. + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA */ #ifndef FLOW_H @@ -30,10 +40,6 @@ struct sw_flow_actions { struct nlattr actions[]; }; -/* Mask for the OVS_FRAG_TYPE_* value in the low 2 bits of ip.tos_frag in - * struct sw_flow_key. */ -#define OVS_FRAG_TYPE_MASK INET_ECN_MASK - struct sw_flow_key { struct { __be64 tun_id; /* Encapsulating tunnel ID. */ @@ -48,8 +54,9 @@ struct sw_flow_key { } eth; struct { u8 proto; /* IP protocol or lower 8 bits of ARP opcode. */ - u8 tos_frag; /* IP ToS DSCP in high 6 bits, - * OVS_FRAG_TYPE_* in low 2 bits. */ + u8 tos; /* IP ToS. */ + u8 ttl; /* IP TTL/hop limit. */ + u8 frag; /* One of OVS_FRAG_TYPE_*. */ } ip; union { struct { @@ -73,6 +80,7 @@ struct sw_flow_key { struct in6_addr src; /* IPv6 source address. */ struct in6_addr dst; /* IPv6 destination address. */ } addr; + __be32 label; /* IPv6 flow label. */ struct { __be16 src; /* TCP/UDP source port. */ __be16 dst; /* TCP/UDP destination port. */ @@ -146,13 +154,13 @@ u64 flow_used_time(unsigned long flow_jiffies); * OVS_KEY_ATTR_ETHERNET 12 -- 4 16 * OVS_KEY_ATTR_8021Q 4 -- 4 8 * OVS_KEY_ATTR_ETHERTYPE 2 2 4 8 - * OVS_KEY_ATTR_IPV6 34 2 4 40 + * OVS_KEY_ATTR_IPV6 40 -- 4 44 * OVS_KEY_ATTR_ICMPV6 2 2 4 8 * OVS_KEY_ATTR_ND 28 -- 4 32 * ------------------------------------------------- - * total 140 + * total 144 */ -#define FLOW_BUFSIZE 140 +#define FLOW_BUFSIZE 144 int flow_to_nlattrs(const struct sw_flow_key *, struct sk_buff *); int flow_from_nlattrs(struct sw_flow_key *swkey, int *key_lenp, @@ -189,6 +197,6 @@ void flow_tbl_remove(struct flow_table *table, struct sw_flow *flow); u32 flow_hash(const struct sw_flow_key *key, int key_len); struct sw_flow *flow_tbl_next(struct flow_table *table, u32 *bucket, u32 *idx); -extern const u32 ovs_key_lens[OVS_KEY_ATTR_MAX + 1]; +extern const int ovs_key_lens[OVS_KEY_ATTR_MAX + 1]; #endif /* flow.h */