Annotation of embedaddon/mpd/src/ip.h, revision 1.1

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: 
        !            56:   extern struct u_addr *u_addrcopy(const struct u_addr *src, struct u_addr *dst);
        !            57:   extern struct u_addr *u_rangecopy(const struct u_range *src, struct u_range *dst);
        !            58: 
        !            59:   extern struct u_addr *in_addrtou_addr(const struct in_addr *src, struct u_addr *dst);
        !            60:   extern struct u_addr *in6_addrtou_addr(const struct in6_addr *src, struct u_addr *dst);
        !            61: 
        !            62:   extern struct in_addr *u_addrtoin_addr(const struct u_addr *src, struct in_addr *dst);
        !            63:   extern struct in6_addr *u_addrtoin6_addr(const struct u_addr *src, struct in6_addr *dst);
        !            64: 
        !            65:   extern struct u_range *in_addrtou_range(const struct in_addr *src, u_char width, struct u_range *dst);
        !            66:   extern struct u_range *in6_addrtou_range(const struct in6_addr *src, u_char width, struct u_range *dst);
        !            67: 
        !            68:   extern struct sockaddr_storage *u_rangetosockaddrs(struct u_range *range, struct sockaddr_storage *dst, struct sockaddr_storage *msk);
        !            69:   extern struct sockaddr_storage *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);
        !            71: 
        !            72:   extern struct u_addr *u_addrclear(struct u_addr *addr);
        !            73:   extern struct u_range *u_rangeclear(struct u_range *range);
        !            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>