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

Commit fa8cc2c3 authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Revert "net: core: Support UID-based routing."

This reverts commit ba3d8d3f.

Change-Id: I3bc1bc813539f070b3ffcf5c4b494cd80168e389
parent b5851418
Loading
Loading
Loading
Loading
+0 −6
Original line number Original line Diff line number Diff line
@@ -28,8 +28,6 @@ struct fib_rule {
	int			suppress_prefixlen;
	int			suppress_prefixlen;
	char			iifname[IFNAMSIZ];
	char			iifname[IFNAMSIZ];
	char			oifname[IFNAMSIZ];
	char			oifname[IFNAMSIZ];
	kuid_t			uid_start;
	kuid_t			uid_end;
	struct rcu_head		rcu;
	struct rcu_head		rcu;
};
};


@@ -88,14 +86,10 @@ struct fib_rules_ops {
	[FRA_FWMARK]	= { .type = NLA_U32 }, \
	[FRA_FWMARK]	= { .type = NLA_U32 }, \
	[FRA_FWMASK]	= { .type = NLA_U32 }, \
	[FRA_FWMASK]	= { .type = NLA_U32 }, \
	[FRA_TABLE]     = { .type = NLA_U32 }, \
	[FRA_TABLE]     = { .type = NLA_U32 }, \
	[FRA_GOTO]	= { .type = NLA_U32 }, \
	[FRA_UID_START]	= { .type = NLA_U32 }, \
	[FRA_UID_END]	= { .type = NLA_U32 }, \
	[FRA_SUPPRESS_PREFIXLEN] = { .type = NLA_U32 }, \
	[FRA_SUPPRESS_PREFIXLEN] = { .type = NLA_U32 }, \
	[FRA_SUPPRESS_IFGROUP] = { .type = NLA_U32 }, \
	[FRA_SUPPRESS_IFGROUP] = { .type = NLA_U32 }, \
	[FRA_GOTO]	= { .type = NLA_U32 }
	[FRA_GOTO]	= { .type = NLA_U32 }



static inline void fib_rule_get(struct fib_rule *rule)
static inline void fib_rule_get(struct fib_rule *rule)
{
{
	atomic_inc(&rule->refcnt);
	atomic_inc(&rule->refcnt);
+1 −8
Original line number Original line Diff line number Diff line
@@ -10,7 +10,6 @@
#include <linux/socket.h>
#include <linux/socket.h>
#include <linux/in6.h>
#include <linux/in6.h>
#include <linux/atomic.h>
#include <linux/atomic.h>
#include <linux/uidgid.h>


/*
/*
 * ifindex generation is per-net namespace, and loopback is
 * ifindex generation is per-net namespace, and loopback is
@@ -31,7 +30,6 @@ struct flowi_common {
#define FLOWI_FLAG_ANYSRC		0x01
#define FLOWI_FLAG_ANYSRC		0x01
#define FLOWI_FLAG_KNOWN_NH		0x02
#define FLOWI_FLAG_KNOWN_NH		0x02
	__u32	flowic_secid;
	__u32	flowic_secid;
	kuid_t	flowic_uid;
};
};


union flowi_uli {
union flowi_uli {
@@ -68,7 +66,6 @@ struct flowi4 {
#define flowi4_proto		__fl_common.flowic_proto
#define flowi4_proto		__fl_common.flowic_proto
#define flowi4_flags		__fl_common.flowic_flags
#define flowi4_flags		__fl_common.flowic_flags
#define flowi4_secid		__fl_common.flowic_secid
#define flowi4_secid		__fl_common.flowic_secid
#define flowi4_uid		__fl_common.flowic_uid


	/* (saddr,daddr) must be grouped, same order as in IP header */
	/* (saddr,daddr) must be grouped, same order as in IP header */
	__be32			saddr;
	__be32			saddr;
@@ -88,8 +85,7 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
				      __u32 mark, __u8 tos, __u8 scope,
				      __u32 mark, __u8 tos, __u8 scope,
				      __u8 proto, __u8 flags,
				      __u8 proto, __u8 flags,
				      __be32 daddr, __be32 saddr,
				      __be32 daddr, __be32 saddr,
				      __be16 dport, __be16 sport,
				      __be16 dport, __be16 sport)
				      kuid_t uid)
{
{
	fl4->flowi4_oif = oif;
	fl4->flowi4_oif = oif;
	fl4->flowi4_iif = LOOPBACK_IFINDEX;
	fl4->flowi4_iif = LOOPBACK_IFINDEX;
@@ -99,7 +95,6 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
	fl4->flowi4_proto = proto;
	fl4->flowi4_proto = proto;
	fl4->flowi4_flags = flags;
	fl4->flowi4_flags = flags;
	fl4->flowi4_secid = 0;
	fl4->flowi4_secid = 0;
	fl4->flowi4_uid = uid;
	fl4->daddr = daddr;
	fl4->daddr = daddr;
	fl4->saddr = saddr;
	fl4->saddr = saddr;
	fl4->fl4_dport = dport;
	fl4->fl4_dport = dport;
@@ -127,7 +122,6 @@ struct flowi6 {
#define flowi6_proto		__fl_common.flowic_proto
#define flowi6_proto		__fl_common.flowic_proto
#define flowi6_flags		__fl_common.flowic_flags
#define flowi6_flags		__fl_common.flowic_flags
#define flowi6_secid		__fl_common.flowic_secid
#define flowi6_secid		__fl_common.flowic_secid
#define flowi6_uid		__fl_common.flowic_uid
	struct in6_addr		daddr;
	struct in6_addr		daddr;
	struct in6_addr		saddr;
	struct in6_addr		saddr;
	__be32			flowlabel;
	__be32			flowlabel;
@@ -171,7 +165,6 @@ struct flowi {
#define flowi_proto	u.__fl_common.flowic_proto
#define flowi_proto	u.__fl_common.flowic_proto
#define flowi_flags	u.__fl_common.flowic_flags
#define flowi_flags	u.__fl_common.flowic_flags
#define flowi_secid	u.__fl_common.flowic_secid
#define flowi_secid	u.__fl_common.flowic_secid
#define flowi_uid	u.__fl_common.flowic_uid
} __attribute__((__aligned__(BITS_PER_LONG/8)));
} __attribute__((__aligned__(BITS_PER_LONG/8)));


static inline struct flowi *flowi4_to_flowi(struct flowi4 *fl4)
static inline struct flowi *flowi4_to_flowi(struct flowi4 *fl4)
+0 −1
Original line number Original line Diff line number Diff line
@@ -172,7 +172,6 @@ struct ip_reply_arg {
				/* -1 if not needed */ 
				/* -1 if not needed */ 
	int	    bound_dev_if;
	int	    bound_dev_if;
	u8  	    tos;
	u8  	    tos;
	kuid_t	    uid;
}; 
}; 


#define IP_REPLY_ARG_NOSRCCHECK 1
#define IP_REPLY_ARG_NOSRCCHECK 1
+1 −1
Original line number Original line Diff line number Diff line
@@ -108,7 +108,7 @@ int rt6_route_rcv(struct net_device *dev, u8 *opt, int len,
		  const struct in6_addr *gwaddr);
		  const struct in6_addr *gwaddr);


void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu, int oif,
void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu, int oif,
		     u32 mark, kuid_t uid);
		     u32 mark);
void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu);
void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu);
void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark);
void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark);
void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif,
void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif,
+2 −3
Original line number Original line Diff line number Diff line
@@ -140,7 +140,7 @@ static inline struct rtable *ip_route_output_ports(struct net *net, struct flowi
	flowi4_init_output(fl4, oif, sk ? sk->sk_mark : 0, tos,
	flowi4_init_output(fl4, oif, sk ? sk->sk_mark : 0, tos,
			   RT_SCOPE_UNIVERSE, proto,
			   RT_SCOPE_UNIVERSE, proto,
			   sk ? inet_sk_flowi_flags(sk) : 0,
			   sk ? inet_sk_flowi_flags(sk) : 0,
			   daddr, saddr, dport, sport, sock_i_uid(sk));
			   daddr, saddr, dport, sport);
	if (sk)
	if (sk)
		security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
		security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
	return ip_route_output_flow(net, fl4, sk);
	return ip_route_output_flow(net, fl4, sk);
@@ -249,8 +249,7 @@ static inline void ip_route_connect_init(struct flowi4 *fl4, __be32 dst, __be32
		flow_flags |= FLOWI_FLAG_ANYSRC;
		flow_flags |= FLOWI_FLAG_ANYSRC;


	flowi4_init_output(fl4, oif, sk->sk_mark, tos, RT_SCOPE_UNIVERSE,
	flowi4_init_output(fl4, oif, sk->sk_mark, tos, RT_SCOPE_UNIVERSE,
			   protocol, flow_flags, dst, src, dport, sport,
			   protocol, flow_flags, dst, src, dport, sport);
			   sock_i_uid(sk));
}
}


static inline struct rtable *ip_route_connect(struct flowi4 *fl4,
static inline struct rtable *ip_route_connect(struct flowi4 *fl4,
Loading