Annotation of embedaddon/mpd/src/ip.h, revision 1.1.1.2
1.1 misho 1:
2: /*
3: * ip.h
4: *
5: * Written by Alexander Motin <mav@FreeBSD.org>
6: */
7:
8: #ifndef _IP_H_
9: #define _IP_H_
10:
11: #include <sys/types.h>
12: #include <sys/param.h>
13: #include <netinet/in_systm.h>
14: #include <netinet/ip.h>
15:
16: /*
17: * DEFINITIONS
18: */
19:
20: struct u_addr {
21: sa_family_t family;
22: union {
23: struct in_addr ip4;
24: struct in6_addr ip6;
25: } u;
26: };
27:
28: struct u_range {
29: struct u_addr addr;
30: u_char width;
31: };
32:
33: enum {
34: ALLOW_IPV4=1,
35: ALLOW_IPV6,
36: ALLOW_MASK
37: };
38:
39: /*
40: * FUNCTIONS
41: */
42:
43: extern int IpShowRoutes(Context ctx, int ac, char *av[], void *arg);
44: extern int IpAddrInRange(struct u_range *range, struct u_addr *addr);
45:
46: extern int ParseAddr(const char *s, struct u_addr *addr, u_char allow);
47: extern int ParseRange(const char *s, struct u_range *range, u_char allow);
48: extern struct sockaddr_storage * ParseAddrPort(int ac, char *av[], u_char allow);
49:
50: extern sa_family_t u_addrfamily(struct u_addr *addr);
51: extern sa_family_t u_rangefamily(struct u_range *range);
52:
53: extern char *u_addrtoa(struct u_addr *addr, char *dst, size_t size);
54: extern char *u_rangetoa(struct u_range *range, char *dst, size_t size);
55:
1.1.1.2 ! misho 56: extern void u_addrcopy(const struct u_addr *src, struct u_addr *dst);
! 57: extern void u_rangecopy(const struct u_range *src, struct u_range *dst);
1.1 misho 58:
1.1.1.2 ! misho 59: extern void in_addrtou_addr(const struct in_addr *src, struct u_addr *dst);
! 60: extern void in6_addrtou_addr(const struct in6_addr *src, struct u_addr *dst);
1.1 misho 61:
1.1.1.2 ! misho 62: extern void u_addrtoin_addr(const struct u_addr *src, struct in_addr *dst);
! 63: extern void u_addrtoin6_addr(const struct u_addr *src, struct in6_addr *dst);
1.1 misho 64:
1.1.1.2 ! misho 65: extern void in_addrtou_range(const struct in_addr *src, u_char width, struct u_range *dst);
! 66: extern void in6_addrtou_range(const struct in6_addr *src, u_char width, struct u_range *dst);
1.1 misho 67:
1.1.1.2 ! misho 68: extern void u_rangetosockaddrs(struct u_range *range, struct sockaddr_storage *dst, struct sockaddr_storage *msk);
! 69: extern void u_addrtosockaddr(struct u_addr *addr, in_port_t port, struct sockaddr_storage *dst);
! 70: extern void sockaddrtou_addr(struct sockaddr_storage *src, struct u_addr *addr, in_port_t *port);
1.1 misho 71:
1.1.1.2 ! misho 72: extern void u_addrclear(struct u_addr *addr);
! 73: extern void u_rangeclear(struct u_range *range);
1.1 misho 74:
75: extern int u_addrempty(struct u_addr *addr);
76: extern int u_rangeempty(struct u_range *range);
77: extern int u_rangehost(struct u_range *range);
78:
79: extern int u_addrcompare(const struct u_addr *addr1, const struct u_addr *addr2);
80: extern int u_rangecompare(const struct u_range *range1, const struct u_range *range2);
81:
82: extern uint32_t u_addrtoid(const struct u_addr *addr);
83:
84: extern u_char in_addrtowidth(struct in_addr *mask);
85: extern struct in_addr *widthtoin_addr(u_char width, struct in_addr *mask);
86:
87: #endif
88:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>