41 if (addr.len >
sizeof(addr.iabuf))
42 log_fatal(
"subnet_number():%s:%d: Invalid addr length.",
MDL);
43 if (addr.len != mask.len)
44 log_fatal(
"subnet_number():%s:%d: Addr/mask length mismatch.",
50 if (addr.len != mask.len)
54 for (
i = 0;
i <
rv.len;
i++)
55 rv.iabuf [
i] = addr.iabuf [
i] & mask.iabuf [
i];
75 if (
subnet.len != mask.len)
76 log_fatal(
"ip_addr():%s:%d: Addr/mask length mismatch.",
87 for (
i =
sizeof habuf - 1;
i >= 0;
i--) {
88 if (mask.iabuf [
i +
j]) {
89 if (
habuf [
i] > (mask.iabuf [
i +
j] ^ 0xFF)) {
93 for (
k =
i - 1;
k >= 0;
k--) {
120 log_fatal(
"broadcast_addr():%s:%d: Invalid addr length.",
MDL);
121 if (
subnet.len != mask.len)
122 log_fatal(
"broadcast_addr():%s:%d: Addr/mask length mismatch.",
125 if (
subnet.len != mask.len) {
146 if (addr.len >
sizeof(addr.iabuf))
147 log_fatal(
"host_addr():%s:%d: Invalid addr length.",
MDL);
148 if (addr.len != mask.len)
149 log_fatal(
"host_addr():%s:%d: Addr/mask length mismatch.",
156 for (
i = 0;
i <
rv.len;
i++)
157 rv.iabuf [
i] = addr.iabuf [
i] & ~mask.iabuf [
i];
170 log_fatal(
"addr_eq():%s:%d: Invalid addr length.",
MDL);
214 if (
a1->len !=
a2->len) {
218 for (
i=0;
i<
a1->len;
i++) {
219 if (
a1->iabuf[
i] <
a2->iabuf[
i]) {
222 if (
a1->iabuf[
i] >
a2->iabuf[
i]) {
242 if (
a1->len !=
a2->len) {
249 for (
i=0;
i<
a1->len;
i++) {
271 if (
a1->len !=
a2->len) {
278 for (
i=0;
i<
a1->len;
i++) {
426 memset(&mask, 0,
sizeof(mask));
433 val = 1 << (
bit % 8);
451 net = (*result)->
next;
468 while ((
ofs >= 0) && (
tmp > 255)) {
523inet_ntopdd(
const unsigned char *
src,
unsigned srclen,
char *
dst,
size_t size)
525 char tmp[
sizeof(
"32.255.255.255.255")];
558 static char pbuf[
sizeof(
"255.255.255.255.255")];
561 return "<null destination descriptor>";
566 if ((addr.
len >= 2) && (addr.
len <= 5)) {
570 log_fatal(
"pdestdesc():%s:%d: Invalid destination descriptor length %d.",
581 pbuf[
sizeof(
"ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
587 return "<null address>";
592 if (addr.
len == 16) {
596 log_fatal(
"piaddr():%s:%d: Invalid address length %d.",
MDL,
610 if ((addr->
len != 4) && (addr->
len != 16))
611 log_fatal(
"piaddrmask():%s:%d: Address length %d invalid",
613 if (addr->
len != mask->
len)
614 log_fatal(
"piaddrmask():%s:%d: Address and mask size mismatch",
618 for (
mw = (mask->
len * 8) ;
mw > 0 ; ) {
620 bit = 0x80 >> ((
mw - 1) % 8);
639 ret[
sizeof(
"ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255/128")];
646 if (bits > (addr->
len * 8))
669 log_fatal (
"Invalid port number specification: %s", port);
672 log_fatal(
"Port number specified is out of range (%ld-%ld).",
695 log_fatal (
"Invalid port pair specification: %s", port);
698 log_fatal(
"Port pair specified is out of range (%ld-%ld).",
const char * pin6_addr(const struct in6_addr *)
isc_result_t range2cidr(struct iaddrcidrnetlist **result, const struct iaddr *lo, const struct iaddr *hi)
isc_result_t free_iaddrcidrnetlist(struct iaddrcidrnetlist **result)
u_int32_t host_addr(struct iaddr addr, struct iaddr mask)
isc_boolean_t is_cidr_mask_valid(const struct iaddr *addr, int bits)
u_int16_t validate_port(char *port)
struct iaddr ip_addr(struct iaddr subnet, struct iaddr mask, u_int32_t host_address)
char * piaddrcidr(const struct iaddr *addr, unsigned int bits)
const char * piaddr(const struct iaddr addr)
const char * pdestdesc(const struct iaddr addr)
int addr_or(struct iaddr *result, const struct iaddr *a1, const struct iaddr *a2)
int addr_eq(struct iaddr addr1, struct iaddr addr2)
struct iaddr broadcast_addr(struct iaddr subnet, struct iaddr mask)
int addr_cmp(const struct iaddr *a1, const struct iaddr *a2)
u_int16_t validate_port_pair(char *port)
int addr_match(struct iaddr *addr, struct iaddrmatch *match)
struct iaddr subnet_number(struct iaddr addr, struct iaddr mask)
char * piaddrmask(struct iaddr *addr, struct iaddr *mask)
int addr_and(struct iaddr *result, const struct iaddr *a1, const struct iaddr *a2)
void * dmalloc(size_t, const char *, int)
void dfree(void *, const char *, int)
void log_fatal(const char *,...) __attribute__((__format__(__printf__
#define DHCP_R_INVALIDARG
struct iaddrcidrnet cidrnet
struct iaddrcidrnetlist * next