[BACK]Return to addr.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/addr.h, Revision 1.1

1.1     ! dtucker     1: /*
        !             2:  * Copyright (c) 2004,2005 Damien Miller <djm@mindrot.org>
        !             3:  *
        !             4:  * Permission to use, copy, modify, and distribute this software for any
        !             5:  * purpose with or without fee is hereby granted, provided that the above
        !             6:  * copyright notice and this permission notice appear in all copies.
        !             7:  *
        !             8:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !             9:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            10:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            11:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            12:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            13:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            14:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            15:  */
        !            16:
        !            17: /* Address handling routines */
        !            18:
        !            19: #ifndef _ADDR_H
        !            20: #define _ADDR_H
        !            21:
        !            22: #include <sys/socket.h>
        !            23: #include <netinet/in.h>
        !            24:
        !            25: struct xaddr {
        !            26:        sa_family_t     af;
        !            27:        union {
        !            28:                struct in_addr          v4;
        !            29:                struct in6_addr         v6;
        !            30:                u_int8_t                addr8[16];
        !            31:                u_int16_t               addr16[8];
        !            32:                u_int32_t               addr32[4];
        !            33:        } xa;               /* 128-bit address */
        !            34:        u_int32_t       scope_id;       /* iface scope id for v6 */
        !            35: #define v4     xa.v4
        !            36: #define v6     xa.v6
        !            37: #define addr8  xa.addr8
        !            38: #define addr16 xa.addr16
        !            39: #define addr32 xa.addr32
        !            40: };
        !            41:
        !            42: int addr_unicast_masklen(int af);
        !            43: int addr_xaddr_to_sa(const struct xaddr *xa, struct sockaddr *sa,
        !            44:     socklen_t *len, u_int16_t port);
        !            45: int addr_sa_to_xaddr(struct sockaddr *sa, socklen_t slen, struct xaddr *xa);
        !            46: int addr_netmask(int af, u_int l, struct xaddr *n);
        !            47: int addr_hostmask(int af, u_int l, struct xaddr *n);
        !            48: int addr_invert(struct xaddr *n);
        !            49: int addr_pton(const char *p, struct xaddr *n);
        !            50: int addr_sa_pton(const char *h, const char *s, struct sockaddr *sa,
        !            51:     socklen_t slen);
        !            52: int addr_pton_cidr(const char *p, struct xaddr *n, u_int *l);
        !            53: int addr_ntop(const struct xaddr *n, char *p, size_t len);
        !            54: int addr_and(struct xaddr *dst, const struct xaddr *a, const struct xaddr *b);
        !            55: int addr_cmp(const struct xaddr *a, const struct xaddr *b);
        !            56: int addr_is_all0s(const struct xaddr *n);
        !            57: int addr_host_is_all0s(const struct xaddr *n, u_int masklen);
        !            58: int addr_netmatch(const struct xaddr *host, const struct xaddr *net,
        !            59:     u_int masklen);
        !            60: #endif /* _ADDR_H */