193a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik/*
293a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *	Linux INET6 implementation
393a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *
493a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *	Authors:
593a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *	Pedro Roque		<roque@di.fc.ul.pt>
693a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *
793a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *	This program is free software; you can redistribute it and/or
893a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *      modify it under the terms of the GNU General Public License
993a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *      as published by the Free Software Foundation; either version
1093a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik *      2 of the License, or (at your option) any later version.
1193a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik */
1293a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
1393a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#ifndef _LINUX_IPV6_ROUTE_H
1493a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define _LINUX_IPV6_ROUTE_H
1593a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
1693a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#include <linux/types.h>
1793a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
1893a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_DEFAULT	0x00010000	/* default - learned via ND	*/
1993a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_ALLONLINK	0x00020000	/* (deprecated and will be removed)
2093a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik					   fallback, no routers on link */
2193a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_ADDRCONF	0x00040000	/* addrconf route - RA		*/
2293a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_PREFIX_RT	0x00080000	/* A prefix only route - RA	*/
2393a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_ANYCAST	0x00100000	/* Anycast			*/
2493a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
2593a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_NONEXTHOP	0x00200000	/* route with no nexthop	*/
2693a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_EXPIRES	0x00400000
2793a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
2893a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_ROUTEINFO	0x00800000	/* route information - RA	*/
2993a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
3093a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_CACHE	0x01000000	/* cache entry			*/
3193a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_FLOW	0x02000000	/* flow significant route	*/
3293a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_POLICY	0x04000000	/* policy route			*/
3393a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
3493a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_PREF(pref)	((pref) << 27)
3593a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_PREF_MASK	0x18000000
3693a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
3793a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTF_LOCAL	0x80000000
3893a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
3993a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#ifdef __KERNEL__
4093a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define IPV6_EXTRACT_PREF(flag)	(((flag) & RTF_PREF_MASK) >> 27)
4193a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define IPV6_DECODE_PREF(pref)	((pref) ^ 2)	/* 1:low,2:med,3:high */
4293a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#endif
4393a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
4493a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naikstruct in6_rtmsg {
4593a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	struct in6_addr		rtmsg_dst;
4693a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	struct in6_addr		rtmsg_src;
4793a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	struct in6_addr		rtmsg_gateway;
4893a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	__u32			rtmsg_type;
4993a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	__u16			rtmsg_dst_len;
5093a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	__u16			rtmsg_src_len;
5193a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	__u32			rtmsg_metric;
5293a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	unsigned long		rtmsg_info;
5393a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik        __u32			rtmsg_flags;
5493a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik	int			rtmsg_ifindex;
5593a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik};
5693a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
5793a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTMSG_NEWDEVICE		0x11
5893a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTMSG_DELDEVICE		0x12
5993a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTMSG_NEWROUTE		0x21
6093a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#define RTMSG_DELROUTE		0x22
6193a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik
6293a8d6ab33206b9114553b86ddaf81b690e382d5Banavathu, Srinivas Naik#endif
63