__be32 daddr;
__be32 saddr;
union flowi_uli uli;
+#define fl4_sport uli.ports.sport
+#define fl4_dport uli.ports.dport
+#define fl4_icmp_type uli.icmpt.type
+#define fl4_icmp_code uli.icmpt.code
+#define fl4_ipsec_spi uli.spi
+#define fl4_mh_type uli.mht.type
+#define fl4_gre_key uli.gre_key
};
struct flowi6 {
#define flowi_proto u.__fl_common.flowic_proto
#define flowi_flags u.__fl_common.flowic_flags
#define flowi_secid u.__fl_common.flowic_secid
-#define fl4_tos flowi_tos
-#define fl4_scope flowi_scope
#define fld_scope flowi_scope
#define fld_dst u.dn.daddr
#define fl6_dst u.ip6.daddr
#define fl6_src u.ip6.saddr
#define fl6_flowlabel u.ip6.flowlabel
-#define fl4_dst u.ip4.daddr
-#define fl4_src u.ip4.saddr
-#define fl4_sport u.ip4.uli.ports.sport
-#define fl4_dport u.ip4.uli.ports.dport
-#define fl4_icmp_type u.ip4.uli.icmpt.type
-#define fl4_icmp_code u.ip4.uli.icmpt.code
-#define fl4_ipsec_spi u.ip4.uli.spi
-#define fl4_mh_type u.ip4.uli.mht.type
-#define fl4_gre_key u.ip4.uli.gre_key
#define fl6_sport u.ip6.uli.ports.sport
#define fl6_dport u.ip6.uli.ports.dport
#define fl6_icmp_type u.ip6.uli.icmpt.type
.saddr = saddr,
.flowi4_tos = tos,
.flowi4_proto = proto,
- .uli.ports.dport = dport,
- .uli.ports.sport = sport,
+ .fl4_dport = dport,
+ .fl4_sport = sport,
};
if (sk)
security_sk_classify_flow(sk, flowi4_to_flowi(&fl4));
.saddr = saddr,
.flowi4_tos = tos,
.flowi4_proto = IPPROTO_GRE,
- .uli.gre_key = gre_key,
+ .fl4_gre_key = gre_key,
};
return ip_route_output_key(net, &fl4);
}
.saddr = src,
.flowi4_tos = tos,
.flowi4_proto = protocol,
- .uli.ports.sport = sport,
- .uli.ports.dport = dport,
+ .fl4_sport = sport,
+ .fl4_dport = dport,
};
struct net *net = sock_net(sk);
struct rtable *rt;
.saddr = rt->rt_key_src,
.flowi4_tos = rt->rt_tos,
.flowi4_proto = protocol,
- .uli.ports.sport = sport,
- .uli.ports.dport = dport
+ .fl4_sport = sport,
+ .fl4_dport = dport
};
if (inet_sk(sk)->transparent)
fl4.flowi4_flags |= FLOWI_FLAG_ANYSRC;
.saddr = ip_hdr(skb)->daddr,
.flowi4_tos = RT_CONN_FLAGS(sk),
.flowi4_proto = sk->sk_protocol,
- .uli.ports.sport = dccp_hdr(skb)->dccph_dport,
- .uli.ports.dport = dccp_hdr(skb)->dccph_sport,
+ .fl4_sport = dccp_hdr(skb)->dccph_dport,
+ .fl4_dport = dccp_hdr(skb)->dccph_sport,
};
security_skb_classify_flow(skb, flowi4_to_flowi(&fl4));
.saddr = saddr,
.flowi4_tos = RT_TOS(tos),
.flowi4_proto = IPPROTO_ICMP,
- .uli.icmpt.type = type,
- .uli.icmpt.code = code,
+ .fl4_icmp_type = type,
+ .fl4_icmp_code = code,
};
struct rtable *rt, *rt2;
int err;
.flowi4_tos = RT_CONN_FLAGS(sk),
.flowi4_proto = sk->sk_protocol,
.flowi4_flags = inet_sk_flowi_flags(sk),
- .uli.ports.sport = inet_sk(sk)->inet_sport,
- .uli.ports.dport = ireq->rmt_port,
+ .fl4_sport = inet_sk(sk)->inet_sport,
+ .fl4_dport = ireq->rmt_port,
};
struct net *net = sock_net(sk);
.daddr = daddr,
.saddr = rt->rt_spec_dst,
.flowi4_tos = RT_TOS(ip_hdr(skb)->tos),
- .uli.ports.sport = tcp_hdr(skb)->dest,
- .uli.ports.dport = tcp_hdr(skb)->source,
+ .fl4_sport = tcp_hdr(skb)->dest,
+ .fl4_dport = tcp_hdr(skb)->source,
.flowi4_proto = sk->sk_protocol,
.flowi4_flags = ip_reply_arg_flowi_flags(arg),
};
t->dst.protonum == IPPROTO_UDPLITE ||
t->dst.protonum == IPPROTO_DCCP ||
t->dst.protonum == IPPROTO_SCTP)
- fl4->uli.ports.dport = t->dst.u.tcp.port;
+ fl4->fl4_dport = t->dst.u.tcp.port;
}
statusbit ^= IPS_NAT_MASK;
t->dst.protonum == IPPROTO_UDPLITE ||
t->dst.protonum == IPPROTO_DCCP ||
t->dst.protonum == IPPROTO_SCTP)
- fl4->uli.ports.sport = t->src.u.tcp.port;
+ fl4->fl4_sport = t->src.u.tcp.port;
}
}
#endif
code = iov->iov_base;
if (type && code) {
- if (get_user(fl4->uli.icmpt.type, type) ||
- get_user(fl4->uli.icmpt.code, code))
+ if (get_user(fl4->fl4_icmp_type, type) ||
+ get_user(fl4->fl4_icmp_code, code))
return -EFAULT;
probed = 1;
}
.flowi4_tos = RT_CONN_FLAGS(sk),
.flowi4_proto = IPPROTO_TCP,
.flowi4_flags = inet_sk_flowi_flags(sk),
- .uli.ports.sport = th->dest,
- .uli.ports.dport = th->source,
+ .fl4_sport = th->dest,
+ .fl4_dport = th->source,
};
security_req_classify_flow(req, flowi4_to_flowi(&fl4));
rt = ip_route_output_key(sock_net(sk), &fl4);
if (!skb)
goto out;
- err = udp_send_skb(skb, fl4->daddr, fl4->uli.ports.dport);
+ err = udp_send_skb(skb, fl4->daddr, fl4->fl4_dport);
out:
up->len = 0;
.flowi4_proto = sk->sk_protocol,
.flowi4_flags = (inet_sk_flowi_flags(sk) |
FLOWI_FLAG_CAN_SLEEP),
- .uli.ports.sport = inet->inet_sport,
- .uli.ports.dport = dport,
+ .fl4_sport = inet->inet_sport,
+ .fl4_dport = dport,
};
struct net *net = sock_net(sk);
fl4 = &inet->cork.fl.u.ip4;
fl4->daddr = daddr;
fl4->saddr = saddr;
- fl4->uli.ports.dport = dport;
- fl4->uli.ports.sport = inet->inet_sport;
+ fl4->fl4_dport = dport;
+ fl4->fl4_sport = inet->inet_sport;
up->pending = AF_INET;
do_append_data:
pskb_may_pull(skb, xprth + 4 - skb->data)) {
__be16 *ports = (__be16 *)xprth;
- fl4->uli.ports.sport = ports[!!reverse];
- fl4->uli.ports.dport = ports[!reverse];
+ fl4->fl4_sport = ports[!!reverse];
+ fl4->fl4_dport = ports[!reverse];
}
break;
if (pskb_may_pull(skb, xprth + 2 - skb->data)) {
u8 *icmp = xprth;
- fl4->uli.icmpt.type = icmp[0];
- fl4->uli.icmpt.code = icmp[1];
+ fl4->fl4_icmp_type = icmp[0];
+ fl4->fl4_icmp_code = icmp[1];
}
break;
if (pskb_may_pull(skb, xprth + 4 - skb->data)) {
__be32 *ehdr = (__be32 *)xprth;
- fl4->uli.spi = ehdr[0];
+ fl4->fl4_ipsec_spi = ehdr[0];
}
break;
if (pskb_may_pull(skb, xprth + 8 - skb->data)) {
__be32 *ah_hdr = (__be32*)xprth;
- fl4->uli.spi = ah_hdr[1];
+ fl4->fl4_ipsec_spi = ah_hdr[1];
}
break;
if (pskb_may_pull(skb, xprth + 4 - skb->data)) {
__be16 *ipcomp_hdr = (__be16 *)xprth;
- fl4->uli.spi = htonl(ntohs(ipcomp_hdr[1]));
+ fl4->fl4_ipsec_spi = htonl(ntohs(ipcomp_hdr[1]));
}
break;
if (greflags[0] & GRE_KEY) {
if (greflags[0] & GRE_CSUM)
gre_hdr++;
- fl4->uli.gre_key = gre_hdr[1];
+ fl4->fl4_gre_key = gre_hdr[1];
}
}
break;
default:
- fl4->uli.spi = 0;
+ fl4->fl4_ipsec_spi = 0;
break;
}
}
memset(&fl4, 0x0, sizeof(struct flowi4));
fl4.daddr = daddr->v4.sin_addr.s_addr;
- fl4.uli.ports.dport = daddr->v4.sin_port;
+ fl4.fl4_dport = daddr->v4.sin_port;
fl4.flowi4_proto = IPPROTO_SCTP;
if (asoc) {
fl4.flowi4_tos = RT_CONN_FLAGS(asoc->base.sk);
fl4.flowi4_oif = asoc->base.sk->sk_bound_dev_if;
- fl4.uli.ports.sport = htons(asoc->base.bind_addr.port);
+ fl4.fl4_sport = htons(asoc->base.bind_addr.port);
}
if (saddr) {
fl4.saddr = saddr->v4.sin_addr.s_addr;
- fl4.uli.ports.sport = saddr->v4.sin_port;
+ fl4.fl4_sport = saddr->v4.sin_port;
}
SCTP_DEBUG_PRINTK("%s: DST:%pI4, SRC:%pI4 - ",
if ((laddr->state == SCTP_ADDR_SRC) &&
(AF_INET == laddr->a.sa.sa_family)) {
fl4.saddr = laddr->a.v4.sin_addr.s_addr;
- fl4.uli.ports.sport = laddr->a.v4.sin_port;
+ fl4.fl4_sport = laddr->a.v4.sin_port;
rt = ip_route_output_key(&init_net, &fl4);
if (!IS_ERR(rt)) {
dst = &rt->dst;