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

Commit 101367c2 authored by Thomas Graf's avatar Thomas Graf Committed by David S. Miller
Browse files

[IPV6]: Policy Routing Rules



Adds support for policy routing rules including a new
local table for routes with a local destination.

Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 14c0b97d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -889,6 +889,8 @@ enum rtnetlink_groups {
	RTNLGRP_NOP4,
	RTNLGRP_IPV6_PREFIX,
#define RTNLGRP_IPV6_PREFIX	RTNLGRP_IPV6_PREFIX
	RTNLGRP_IPV6_RULE,
#define RTNLGRP_IPV6_RULE	RTNLGRP_IPV6_RULE
	__RTNLGRP_MAX
};
#define RTNLGRP_MAX	(__RTNLGRP_MAX - 1)
+8 −1
Original line number Diff line number Diff line
@@ -155,7 +155,6 @@ struct fib6_table {

#define RT6_TABLE_UNSPEC	RT_TABLE_UNSPEC
#define RT6_TABLE_MAIN		RT_TABLE_MAIN
#define RT6_TABLE_LOCAL		RT6_TABLE_MAIN
#define RT6_TABLE_DFLT		RT6_TABLE_MAIN
#define RT6_TABLE_INFO		RT6_TABLE_MAIN
#define RT6_TABLE_PREFIX	RT6_TABLE_MAIN
@@ -163,9 +162,11 @@ struct fib6_table {
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
#define FIB6_TABLE_MIN		1
#define FIB6_TABLE_MAX		RT_TABLE_MAX
#define RT6_TABLE_LOCAL		RT_TABLE_LOCAL
#else
#define FIB6_TABLE_MIN		RT_TABLE_MAIN
#define FIB6_TABLE_MAX		FIB6_TABLE_MIN
#define RT6_TABLE_LOCAL		RT6_TABLE_MAIN
#endif

#define RT6_F_STRICT		1
@@ -221,5 +222,11 @@ extern void fib6_run_gc(unsigned long dummy);
extern void			fib6_gc_cleanup(void);

extern void			fib6_init(void);

extern void			fib6_rules_init(void);
extern void			fib6_rules_cleanup(void);
extern int			fib6_rules_dump(struct sk_buff *,
						struct netlink_callback *);

#endif
#endif
+5 −0
Original line number Diff line number Diff line
@@ -41,6 +41,11 @@ struct pol_chain {

extern struct rt6_info	ip6_null_entry;

#ifdef CONFIG_IPV6_MULTIPLE_TABLES
extern struct rt6_info	ip6_prohibit_entry;
extern struct rt6_info	ip6_blk_hole_entry;
#endif

extern int ip6_rt_gc_interval;

extern void			ip6_route_input(struct sk_buff *skb);
+1 −0
Original line number Diff line number Diff line
@@ -139,6 +139,7 @@ config IPV6_TUNNEL
config IPV6_MULTIPLE_TABLES
	bool "IPv6: Multiple Routing Tables"
	depends on IPV6 && EXPERIMENTAL
	select FIB_RULES
	---help---
	  Support multiple routing tables.
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ ipv6-objs := af_inet6.o anycast.o ip6_output.o ip6_input.o addrconf.o sit.o \
ipv6-$(CONFIG_XFRM) += xfrm6_policy.o xfrm6_state.o xfrm6_input.o \
	xfrm6_output.o
ipv6-$(CONFIG_NETFILTER) += netfilter.o
ipv6-$(CONFIG_IPV6_MULTIPLE_TABLES) += fib6_rules.o
ipv6-objs += $(ipv6-y)

obj-$(CONFIG_INET6_AH) += ah6.o
Loading