diff options
author | David S. Miller <davem@davemloft.net> | 2011-03-12 00:44:35 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-12 18:08:46 -0500 |
commit | 56bb8059e1a8bf291054c26367564dc302f6fd8f (patch) | |
tree | 56ec5ae2c1856208ccf97a0cd6b21ab0587f34cf /include/net/flow.h | |
parent | 6281dcc94a96bd73017b2baa8fa83925405109ef (diff) |
net: Break struct flowi out into AF specific instances.
Now we have struct flowi4, flowi6, and flowidn for each address
family. And struct flowi is just a union of them all.
It might have been troublesome to convert flow_cache_uli_match() but
as it turns out this function is completely unused and therefore can
be simply removed.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/flow.h')
-rw-r--r-- | include/net/flow.h | 114 |
1 files changed, 57 insertions, 57 deletions
diff --git a/include/net/flow.h b/include/net/flow.h index f19f41d7dafc..931169095cc9 100644 --- a/include/net/flow.h +++ b/include/net/flow.h | |||
@@ -48,61 +48,68 @@ union flowi_uli { | |||
48 | } mht; | 48 | } mht; |
49 | }; | 49 | }; |
50 | 50 | ||
51 | struct flowi { | 51 | struct flowi4 { |
52 | struct flowi_common __fl_common; | ||
53 | __be32 daddr; | ||
54 | __be32 saddr; | ||
55 | union flowi_uli uli; | ||
56 | }; | ||
57 | |||
58 | struct flowi6 { | ||
52 | struct flowi_common __fl_common; | 59 | struct flowi_common __fl_common; |
53 | #define flowi_oif __fl_common.flowic_oif | 60 | struct in6_addr daddr; |
54 | #define flowi_iif __fl_common.flowic_iif | 61 | struct in6_addr saddr; |
55 | #define flowi_mark __fl_common.flowic_mark | 62 | __be32 flowlabel; |
56 | #define flowi_tos __fl_common.flowic_tos | 63 | union flowi_uli uli; |
57 | #define flowi_scope __fl_common.flowic_scope | 64 | }; |
58 | #define flowi_proto __fl_common.flowic_proto | ||
59 | #define flowi_flags __fl_common.flowic_flags | ||
60 | #define flowi_secid __fl_common.flowic_secid | ||
61 | 65 | ||
66 | struct flowidn { | ||
67 | struct flowi_common __fl_common; | ||
68 | __le16 daddr; | ||
69 | __le16 saddr; | ||
70 | union flowi_uli uli; | ||
71 | }; | ||
72 | |||
73 | struct flowi { | ||
62 | union { | 74 | union { |
63 | struct { | 75 | struct flowi_common __fl_common; |
64 | __be32 daddr; | 76 | struct flowi4 ip4; |
65 | __be32 saddr; | 77 | struct flowi6 ip6; |
66 | } ip4_u; | 78 | struct flowidn dn; |
67 | 79 | } u; | |
68 | struct { | 80 | #define flowi_oif u.__fl_common.flowic_oif |
69 | struct in6_addr daddr; | 81 | #define flowi_iif u.__fl_common.flowic_iif |
70 | struct in6_addr saddr; | 82 | #define flowi_mark u.__fl_common.flowic_mark |
71 | __be32 flowlabel; | 83 | #define flowi_tos u.__fl_common.flowic_tos |
72 | } ip6_u; | 84 | #define flowi_scope u.__fl_common.flowic_scope |
73 | 85 | #define flowi_proto u.__fl_common.flowic_proto | |
74 | struct { | 86 | #define flowi_flags u.__fl_common.flowic_flags |
75 | __le16 daddr; | 87 | #define flowi_secid u.__fl_common.flowic_secid |
76 | __le16 saddr; | ||
77 | __u8 scope; | ||
78 | } dn_u; | ||
79 | } nl_u; | ||
80 | #define fld_dst nl_u.dn_u.daddr | ||
81 | #define fld_src nl_u.dn_u.saddr | ||
82 | #define fld_scope nl_u.dn_u.scope | ||
83 | #define fl6_dst nl_u.ip6_u.daddr | ||
84 | #define fl6_src nl_u.ip6_u.saddr | ||
85 | #define fl6_flowlabel nl_u.ip6_u.flowlabel | ||
86 | #define fl4_dst nl_u.ip4_u.daddr | ||
87 | #define fl4_src nl_u.ip4_u.saddr | ||
88 | #define fl4_tos flowi_tos | 88 | #define fl4_tos flowi_tos |
89 | #define fl4_scope flowi_scope | 89 | #define fl4_scope flowi_scope |
90 | 90 | #define fld_scope flowi_scope | |
91 | union flowi_uli uli_u; | 91 | |
92 | #define fl4_sport uli_u.ports.sport | 92 | #define fld_dst u.dn.daddr |
93 | #define fl4_dport uli_u.ports.dport | 93 | #define fld_src u.dn.saddr |
94 | #define fl4_icmp_type uli_u.icmpt.type | 94 | #define fl6_dst u.ip6.daddr |
95 | #define fl4_icmp_code uli_u.icmpt.code | 95 | #define fl6_src u.ip6.saddr |
96 | #define fl4_ipsec_spi uli_u.spi | 96 | #define fl6_flowlabel u.ip6.flowlabel |
97 | #define fl4_mh_type uli_u.mht.type | 97 | #define fl4_dst u.ip4.daddr |
98 | #define fl4_gre_key uli_u.gre_key | 98 | #define fl4_src u.ip4.saddr |
99 | #define fl6_sport uli_u.ports.sport | 99 | #define fl4_sport u.ip4.uli.ports.sport |
100 | #define fl6_dport uli_u.ports.dport | 100 | #define fl4_dport u.ip4.uli.ports.dport |
101 | #define fl6_icmp_type uli_u.icmpt.type | 101 | #define fl4_icmp_type u.ip4.uli.icmpt.type |
102 | #define fl6_icmp_code uli_u.icmpt.code | 102 | #define fl4_icmp_code u.ip4.uli.icmpt.code |
103 | #define fl6_ipsec_spi uli_u.spi | 103 | #define fl4_ipsec_spi u.ip4.uli.spi |
104 | #define fl6_mh_type uli_u.mht.type | 104 | #define fl4_mh_type u.ip4.uli.mht.type |
105 | #define fl6_gre_key uli_u.gre_key | 105 | #define fl4_gre_key u.ip4.uli.gre_key |
106 | #define fl6_sport u.ip6.uli.ports.sport | ||
107 | #define fl6_dport u.ip6.uli.ports.dport | ||
108 | #define fl6_icmp_type u.ip6.uli.icmpt.type | ||
109 | #define fl6_icmp_code u.ip6.uli.icmpt.code | ||
110 | #define fl6_ipsec_spi u.ip6.uli.spi | ||
111 | #define fl6_mh_type u.ip6.uli.mht.type | ||
112 | #define fl6_gre_key u.ip6.uli.gre_key | ||
106 | } __attribute__((__aligned__(BITS_PER_LONG/8))); | 113 | } __attribute__((__aligned__(BITS_PER_LONG/8))); |
107 | 114 | ||
108 | #define FLOW_DIR_IN 0 | 115 | #define FLOW_DIR_IN 0 |
@@ -134,11 +141,4 @@ extern struct flow_cache_object *flow_cache_lookup( | |||
134 | extern void flow_cache_flush(void); | 141 | extern void flow_cache_flush(void); |
135 | extern atomic_t flow_cache_genid; | 142 | extern atomic_t flow_cache_genid; |
136 | 143 | ||
137 | static inline int flow_cache_uli_match(const struct flowi *fl1, | ||
138 | const struct flowi *fl2) | ||
139 | { | ||
140 | return (fl1->flowi_proto == fl2->flowi_proto && | ||
141 | !memcmp(&fl1->uli_u, &fl2->uli_u, sizeof(fl1->uli_u))); | ||
142 | } | ||
143 | |||
144 | #endif | 144 | #endif |