/usr/include/libcidr.h is in libcidr-dev 1.2.3-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | /*
* libcidr.h - Header file for libCIDR
*/
#ifndef __LIBCIDR_H
#define __LIBCIDR_H
/* We need the fixed-size int types. See discussion below. */
#include <inttypes.h>
/* We need the struct in[6]_addr defs */
#include <netinet/in.h>
/* CONSTANTS */
/* String forms (cidr_to_str()) */
#define CIDR_NOFLAGS (0)
#define CIDR_NOCOMPACT (1) /* Don't do :: compaction */
#define CIDR_VERBOSE (1<<1) /* Don't minimize leading zeros */
#define CIDR_USEV6 (1<<2) /* Use v6 form for v4 addresses */
#define CIDR_USEV4COMPAT (1<<3) /* Use v4-compat rather than v4-mapped */
#define CIDR_NETMASK (1<<4) /* Show netmask instead of pflen */
#define CIDR_ONLYADDR (1<<5) /* Only show the address */
#define CIDR_ONLYPFLEN (1<<6) /* Only show the pf/mask */
#define CIDR_WILDCARD (1<<7) /* Show wildcard-mask instead of netmask */
#define CIDR_FORCEV6 (1<<8) /* Force treating as v6 address */
#define CIDR_FORCEV4 (1<<9) /* Force treating as v4 address */
#define CIDR_REVERSE (1<<10) /* Return a DNS PTR name */
/* Protocols */
#define CIDR_NOPROTO 0
#define CIDR_IPV4 1
#define CIDR_IPV6 2
/* Versioning info */
#define CIDR_VERSION "1.2.3"
#define CIDR_RELEASE "release"
#define CIDR_REVISION " (fullermd@over-yonder.net-20140201113312-pbfu6stkedc79fe9)"
#define CIDR_VERSION_STR (CIDR_VERSION "-" CIDR_RELEASE CIDR_REVISION)
/* DATA STRUCTURES */
/*
* Discussion:
* uint*_t are defined by POSIX and C99. We only probably NEED stdint.h
* defines, since we don't need the various output stuff. However, for
* now, we'll get all of inttypes.h because some older platforms only
* have it, and define the uint*_t's in there (FreeBSD 4.x being the most
* obvious one I care about). Revisit this down the line if necessary.
*
* Note that you should almost certainly not be messing with this
* structure directly from external programs. Use the cidr_get_*()
* functions to get a copy to work with.
*/
struct cidr_addr
{
int version;
uint8_t addr[16];
uint8_t mask[16];
int proto;
};
typedef struct cidr_addr CIDR;
/* PROTOTYPES */
CIDR *cidr_addr_broadcast(const CIDR *);
CIDR *cidr_addr_hostmax(const CIDR *);
CIDR *cidr_addr_hostmin(const CIDR *);
CIDR *cidr_addr_network(const CIDR *);
CIDR *cidr_alloc(void);
int cidr_contains(const CIDR *, const CIDR *);
CIDR *cidr_dup(const CIDR *);
int cidr_equals(const CIDR *, const CIDR *);
void cidr_free(CIDR *);
CIDR *cidr_from_inaddr(const struct in_addr *);
CIDR *cidr_from_in6addr(const struct in6_addr *);
CIDR *cidr_from_str(const char *);
uint8_t *cidr_get_addr(const CIDR *);
uint8_t *cidr_get_mask(const CIDR *);
int cidr_get_pflen(const CIDR *);
int cidr_get_proto(const CIDR *);
int cidr_is_v4mapped(const CIDR *);
CIDR **cidr_net_subnets(const CIDR *);
CIDR *cidr_net_supernet(const CIDR *);
const char *cidr_numaddr(const CIDR *);
const char *cidr_numaddr_pflen(int);
const char *cidr_numhost(const CIDR *);
const char *cidr_numhost_pflen(int);
struct in_addr *cidr_to_inaddr(const CIDR *, struct in_addr *);
struct in6_addr *cidr_to_in6addr(const CIDR *, struct in6_addr *);
char *cidr_to_str(const CIDR *, int);
const char *cidr_version(void);
#endif /* __LIBCIDR_H */
|