xref: /minix/minix/net/lwip/ifaddr.h (revision fb9c64b2)
1 #ifndef MINIX_NET_LWIP_IFADDR_H
2 #define MINIX_NET_LWIP_IFADDR_H
3 
4 /* Possible values of ifdev_v6flags[] elements. */
5 #define IFADDR_V6F_AUTOCONF	0x01	/* autoconfigured address, no subnet */
6 #define IFADDR_V6F_TEMPORARY	0x02	/* temporary (privacy) address */
7 #define IFADDR_V6F_HWBASED	0x04	/* auto-derived from MAC address */
8 
9 typedef int ifaddr_v4_num_t;		/* interface IPv4 address number */
10 typedef int ifaddr_v6_num_t;		/* interface IPv6 address number */
11 typedef int ifaddr_dl_num_t;		/* interface link address number */
12 
13 extern int ifaddr_auto_linklocal;
14 extern int ifaddr_accept_rtadv;
15 
16 void ifaddr_init(struct ifdev * ifdev);
17 
18 int ifaddr_v4_find(struct ifdev * ifdev, const struct sockaddr_in * addr,
19 	ifaddr_v4_num_t * num);
20 int ifaddr_v4_enum(struct ifdev * ifdev, ifaddr_v4_num_t * num);
21 int ifaddr_v4_get(struct ifdev * ifdev, ifaddr_v4_num_t num,
22 	struct sockaddr_in * addr, struct sockaddr_in * mask,
23 	struct sockaddr_in * bcast, struct sockaddr_in * dest);
24 int ifaddr_v4_get_flags(struct ifdev * ifdev, ifaddr_v4_num_t num);
25 int ifaddr_v4_add(struct ifdev * ifdev, const struct sockaddr_in * addr,
26 	const struct sockaddr_in * mask, const struct sockaddr_in * bcast,
27 	const struct sockaddr_in * dest, int flags);
28 void ifaddr_v4_del(struct ifdev * ifdev, ifaddr_v4_num_t num);
29 void ifaddr_v4_clear(struct ifdev * ifdev);
30 struct ifdev *ifaddr_v4_map_by_addr(const ip4_addr_t * ip4addr);
31 
32 int ifaddr_v6_find(struct ifdev * ifdev, const struct sockaddr_in6 * addr6,
33 	ifaddr_v6_num_t * num);
34 int ifaddr_v6_enum(struct ifdev * ifdev, ifaddr_v6_num_t * num);
35 void ifaddr_v6_get(struct ifdev * ifdev, ifaddr_v6_num_t num,
36 	struct sockaddr_in6 * addr6, struct sockaddr_in6 * mask6,
37 	struct sockaddr_in6 * dest6);
38 int ifaddr_v6_get_flags(struct ifdev * ifdev, ifaddr_v6_num_t num);
39 void ifaddr_v6_get_lifetime(struct ifdev * ifdev, ifaddr_v6_num_t num,
40 	struct in6_addrlifetime * lifetime);
41 int ifaddr_v6_add(struct ifdev * ifdev, const struct sockaddr_in6 * addr6,
42 	const struct sockaddr_in6 * mask6, const struct sockaddr_in6 * dest6,
43 	int flags, const struct in6_addrlifetime * lifetime);
44 void ifaddr_v6_del(struct ifdev * ifdev, ifaddr_v6_num_t num);
45 void ifaddr_v6_clear(struct ifdev * ifdev);
46 void ifaddr_v6_check(struct ifdev * ifdev);
47 void ifaddr_v6_set_up(struct ifdev * ifdev);
48 void ifaddr_v6_set_linklocal(struct ifdev * ifdev);
49 struct ifdev *ifaddr_v6_map_by_addr(const ip6_addr_t * ip6addr);
50 
51 struct ifdev *ifaddr_map_by_addr(const ip_addr_t * ipaddr);
52 struct ifdev *ifaddr_map_by_subnet(const ip_addr_t * ipaddr);
53 const ip_addr_t *ifaddr_select(const ip_addr_t * dst_addr,
54 	struct ifdev * ifdev, struct ifdev ** ifdevp);
55 int ifaddr_is_zone_mismatch(const ip6_addr_t * ipaddr, struct ifdev * ifdev);
56 
57 int ifaddr_dl_find(struct ifdev * ifdev, const struct sockaddr_dlx * addr,
58 	socklen_t addr_len, ifaddr_dl_num_t * num);
59 int ifaddr_dl_enum(struct ifdev * ifdev, ifaddr_dl_num_t * num);
60 void ifaddr_dl_get(struct ifdev * ifdev, ifaddr_dl_num_t num,
61 	struct sockaddr_dlx * addr);
62 int ifaddr_dl_get_flags(struct ifdev * ifdev, ifaddr_dl_num_t num);
63 int ifaddr_dl_add(struct ifdev * ifdev, const struct sockaddr_dlx * addr,
64 	socklen_t addr_len, int flags);
65 int ifaddr_dl_del(struct ifdev * ifdev, ifaddr_dl_num_t num);
66 void ifaddr_dl_clear(struct ifdev * ifdev);
67 void ifaddr_dl_update(struct ifdev * ifdev, const uint8_t * hwaddr,
68 	int is_factory);
69 
70 #endif /* !MINIX_NET_LWIP_IFADDR_H */
71