Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1958b856 authored by David S. Miller's avatar David S. Miller
Browse files

net: Put fl6_* macros to struct flowi6 and use them again.

parent 4c9483b2
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -84,6 +84,13 @@ struct flowi6 {
	struct in6_addr		saddr;
	__be32			flowlabel;
	union flowi_uli		uli;
#define fl6_sport		uli.ports.sport
#define fl6_dport		uli.ports.dport
#define fl6_icmp_type		uli.icmpt.type
#define fl6_icmp_code		uli.icmpt.code
#define fl6_ipsec_spi		uli.spi
#define fl6_mh_type		uli.mht.type
#define fl6_gre_key		uli.gre_key
};

struct flowidn {
@@ -112,16 +119,6 @@ struct flowi {

#define fld_dst		u.dn.daddr
#define fld_src		u.dn.saddr
#define fl6_dst		u.ip6.daddr
#define fl6_src		u.ip6.saddr
#define fl6_flowlabel	u.ip6.flowlabel
#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
#define fl6_icmp_code	u.ip6.uli.icmpt.code
#define fl6_ipsec_spi	u.ip6.uli.spi
#define fl6_mh_type	u.ip6.uli.mht.type
#define fl6_gre_key	u.ip6.uli.gre_key
} __attribute__((__aligned__(BITS_PER_LONG/8)));

static inline struct flowi *flowi4_to_flowi(struct flowi4 *fl4)
+10 −10
Original line number Diff line number Diff line
@@ -158,8 +158,8 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
			ipv6_addr_copy(&fl6.daddr, &np->daddr);
			ipv6_addr_copy(&fl6.saddr, &np->saddr);
			fl6.flowi6_oif = sk->sk_bound_dev_if;
			fl6.uli.ports.dport = inet->inet_dport;
			fl6.uli.ports.sport = inet->inet_sport;
			fl6.fl6_dport = inet->inet_dport;
			fl6.fl6_sport = inet->inet_sport;
			security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));

			dst = ip6_dst_lookup_flow(sk, &fl6, NULL, false);
@@ -253,8 +253,8 @@ static int dccp_v6_send_response(struct sock *sk, struct request_sock *req,
	ipv6_addr_copy(&fl6.saddr, &ireq6->loc_addr);
	fl6.flowlabel = 0;
	fl6.flowi6_oif = ireq6->iif;
	fl6.uli.ports.dport = inet_rsk(req)->rmt_port;
	fl6.uli.ports.sport = inet_rsk(req)->loc_port;
	fl6.fl6_dport = inet_rsk(req)->rmt_port;
	fl6.fl6_sport = inet_rsk(req)->loc_port;
	security_req_classify_flow(req, flowi6_to_flowi(&fl6));

	opt = np->opt;
@@ -323,8 +323,8 @@ static void dccp_v6_ctl_send_reset(struct sock *sk, struct sk_buff *rxskb)

	fl6.flowi6_proto = IPPROTO_DCCP;
	fl6.flowi6_oif = inet6_iif(rxskb);
	fl6.uli.ports.dport = dccp_hdr(skb)->dccph_dport;
	fl6.uli.ports.sport = dccp_hdr(skb)->dccph_sport;
	fl6.fl6_dport = dccp_hdr(skb)->dccph_dport;
	fl6.fl6_sport = dccp_hdr(skb)->dccph_sport;
	security_skb_classify_flow(rxskb, flowi6_to_flowi(&fl6));

	/* sk = NULL, but it is safe for now. RST socket required. */
@@ -535,8 +535,8 @@ static struct sock *dccp_v6_request_recv_sock(struct sock *sk,
		final_p = fl6_update_dst(&fl6, opt, &final);
		ipv6_addr_copy(&fl6.saddr, &ireq6->loc_addr);
		fl6.flowi6_oif = sk->sk_bound_dev_if;
		fl6.uli.ports.dport = inet_rsk(req)->rmt_port;
		fl6.uli.ports.sport = inet_rsk(req)->loc_port;
		fl6.fl6_dport = inet_rsk(req)->rmt_port;
		fl6.fl6_sport = inet_rsk(req)->loc_port;
		security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));

		dst = ip6_dst_lookup_flow(sk, &fl6, final_p, false);
@@ -957,8 +957,8 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
	ipv6_addr_copy(&fl6.daddr, &np->daddr);
	ipv6_addr_copy(&fl6.saddr, saddr ? saddr : &np->saddr);
	fl6.flowi6_oif = sk->sk_bound_dev_if;
	fl6.uli.ports.dport = usin->sin6_port;
	fl6.uli.ports.sport = inet->inet_sport;
	fl6.fl6_dport = usin->sin6_port;
	fl6.fl6_sport = inet->inet_sport;
	security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));

	final_p = fl6_update_dst(&fl6, np->opt, &final);
+2 −2
Original line number Diff line number Diff line
@@ -661,8 +661,8 @@ int inet6_sk_rebuild_header(struct sock *sk)
		fl6.flowlabel = np->flow_label;
		fl6.flowi6_oif = sk->sk_bound_dev_if;
		fl6.flowi6_mark = sk->sk_mark;
		fl6.uli.ports.dport = inet->inet_dport;
		fl6.uli.ports.sport = inet->inet_sport;
		fl6.fl6_dport = inet->inet_dport;
		fl6.fl6_sport = inet->inet_sport;
		security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));

		final_p = fl6_update_dst(&fl6, np->opt, &final);
+3 −3
Original line number Diff line number Diff line
@@ -151,8 +151,8 @@ ipv4_connected:
	ipv6_addr_copy(&fl6.saddr, &np->saddr);
	fl6.flowi6_oif = sk->sk_bound_dev_if;
	fl6.flowi6_mark = sk->sk_mark;
	fl6.uli.ports.dport = inet->inet_dport;
	fl6.uli.ports.sport = inet->inet_sport;
	fl6.fl6_dport = inet->inet_dport;
	fl6.fl6_sport = inet->inet_sport;

	if (!fl6.flowi6_oif && (addr_type&IPV6_ADDR_MULTICAST))
		fl6.flowi6_oif = np->mcast_oif;
@@ -261,7 +261,7 @@ void ipv6_local_error(struct sock *sk, int err, struct flowi6 *fl6, u32 info)
	serr->ee.ee_info = info;
	serr->ee.ee_data = 0;
	serr->addr_offset = (u8 *)&iph->daddr - skb_network_header(skb);
	serr->port = fl6->uli.ports.dport;
	serr->port = fl6->fl6_dport;

	__skb_pull(skb, skb_tail_pointer(skb) - skb->data);
	skb_reset_transport_header(skb);
+5 −5
Original line number Diff line number Diff line
@@ -448,8 +448,8 @@ void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
	if (saddr)
		ipv6_addr_copy(&fl6.saddr, saddr);
	fl6.flowi6_oif = iif;
	fl6.uli.icmpt.type = type;
	fl6.uli.icmpt.code = code;
	fl6.fl6_icmp_type = type;
	fl6.fl6_icmp_code = code;
	security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));

	sk = icmpv6_xmit_lock(net);
@@ -544,7 +544,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
	if (saddr)
		ipv6_addr_copy(&fl6.saddr, saddr);
	fl6.flowi6_oif = skb->dev->ifindex;
	fl6.uli.icmpt.type = ICMPV6_ECHO_REPLY;
	fl6.fl6_icmp_type = ICMPV6_ECHO_REPLY;
	security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));

	sk = icmpv6_xmit_lock(net);
@@ -794,8 +794,8 @@ void icmpv6_flow_init(struct sock *sk, struct flowi6 *fl6,
	ipv6_addr_copy(&fl6->saddr, saddr);
	ipv6_addr_copy(&fl6->daddr, daddr);
	fl6->flowi6_proto 	= IPPROTO_ICMPV6;
	fl6->uli.icmpt.type	= type;
	fl6->uli.icmpt.code	= 0;
	fl6->fl6_icmp_type	= type;
	fl6->fl6_icmp_code	= 0;
	fl6->flowi6_oif		= oif;
	security_sk_classify_flow(sk, flowi6_to_flowi(fl6));
}
Loading