xref: /minix3/minix/net/lwip/route.h (revision ef8d499e2d2af900e9b2ab297171d7b088652482)
1*ef8d499eSDavid van Moolenbroek #ifndef MINIX_NET_LWIP_ROUTE_H
2*ef8d499eSDavid van Moolenbroek #define MINIX_NET_LWIP_ROUTE_H
3*ef8d499eSDavid van Moolenbroek 
4*ef8d499eSDavid van Moolenbroek #include <net/route.h>
5*ef8d499eSDavid van Moolenbroek 
6*ef8d499eSDavid van Moolenbroek struct route_entry;
7*ef8d499eSDavid van Moolenbroek struct rtsock_request;
8*ef8d499eSDavid van Moolenbroek 
9*ef8d499eSDavid van Moolenbroek void route_init(void);
10*ef8d499eSDavid van Moolenbroek int route_add(const ip_addr_t * addr, unsigned int prefix,
11*ef8d499eSDavid van Moolenbroek 	const ip_addr_t * gateway, struct ifdev * ifdev, unsigned int flags,
12*ef8d499eSDavid van Moolenbroek 	const struct rtsock_request * rtr);
13*ef8d499eSDavid van Moolenbroek int route_can_add(const ip_addr_t * addr, unsigned int prefix, int is_host);
14*ef8d499eSDavid van Moolenbroek struct route_entry *route_find(const ip_addr_t * addr, unsigned int prefix,
15*ef8d499eSDavid van Moolenbroek 	int is_host);
16*ef8d499eSDavid van Moolenbroek struct route_entry *route_lookup(const ip_addr_t * addr);
17*ef8d499eSDavid van Moolenbroek void route_delete(struct route_entry * route,
18*ef8d499eSDavid van Moolenbroek 	const struct rtsock_request * rtr);
19*ef8d499eSDavid van Moolenbroek void route_clear(struct ifdev * ifdev);
20*ef8d499eSDavid van Moolenbroek int route_process(unsigned int type, const struct sockaddr * dst,
21*ef8d499eSDavid van Moolenbroek 	const struct sockaddr * mask, const struct sockaddr * gateway,
22*ef8d499eSDavid van Moolenbroek 	const struct sockaddr * ifp, const struct sockaddr * ifa,
23*ef8d499eSDavid van Moolenbroek 	unsigned int flags, unsigned long inits,
24*ef8d499eSDavid van Moolenbroek 	const struct rt_metrics * rmx, const struct rtsock_request * rtr);
25*ef8d499eSDavid van Moolenbroek void route_get(const struct route_entry * route, union sockaddr_any * addr,
26*ef8d499eSDavid van Moolenbroek 	union sockaddr_any * mask, union sockaddr_any * gateway,
27*ef8d499eSDavid van Moolenbroek 	union sockaddr_any * ifp, union sockaddr_any * ifa,
28*ef8d499eSDavid van Moolenbroek 	struct ifdev ** ifdev, unsigned int * flags, unsigned int * use);
29*ef8d499eSDavid van Moolenbroek unsigned int route_get_flags(const struct route_entry * route);
30*ef8d499eSDavid van Moolenbroek struct ifdev *route_get_ifdev(const struct route_entry * route);
31*ef8d499eSDavid van Moolenbroek int route_is_ipv6(const struct route_entry * route);
32*ef8d499eSDavid van Moolenbroek struct route_entry *route_enum_v4(struct route_entry * last);
33*ef8d499eSDavid van Moolenbroek struct route_entry *route_enum_v6(struct route_entry * last);
34*ef8d499eSDavid van Moolenbroek int route_output_v4(struct ifdev * ifdev, const ip4_addr_t * ipaddr,
35*ef8d499eSDavid van Moolenbroek 	err_t * err);
36*ef8d499eSDavid van Moolenbroek int route_output_v6(struct ifdev * ifdev, const ip6_addr_t * ipaddr,
37*ef8d499eSDavid van Moolenbroek 	err_t * err);
38*ef8d499eSDavid van Moolenbroek 
39*ef8d499eSDavid van Moolenbroek #endif /* !MINIX_NET_LWIP_ROUTE_H */
40