Home | History | Annotate | Download | only in src

Lines Matching refs:range

413   struct ncprange range;
415 if (!ncprange_aton(&range, ncp, data))
418 if (range.ncprange_family == AF_INET && range.ncprange_ip4width != 32 &&
419 range.ncprange_ip4addr.s_addr != INADDR_ANY) {
425 if (range.ncprange_family == AF_INET6 && range.ncprange_ip6width != 128 &&
426 !IN6_IS_ADDR_UNSPECIFIED(&range.ncprange_ip6addr)) {
432 switch (range.ncprange_family) {
434 addr->ncpaddr_family = range.ncprange_family;
435 addr->ncpaddr_ip4addr = range.ncprange_ip4addr;
440 addr->ncpaddr_family = range.ncprange_family;
441 addr->ncpaddr_ip6addr = range.ncprange_ip6addr;
450 ncprange_init(struct ncprange *range)
452 range->ncprange_family = AF_UNSPEC;
456 ncprange_isset(const struct ncprange *range)
458 return range->ncprange_family != AF_UNSPEC;
462 ncprange_equal(const struct ncprange *range, const struct ncprange *cmp)
464 if (range->ncprange_family != cmp->ncprange_family)
467 switch (range->ncprange_family) {
469 if (range->ncprange_ip4addr.s_addr != cmp->ncprange_ip4addr.s_addr)
471 return range->ncprange_ip4mask.s_addr == cmp->ncprange_ip4mask.s_addr;
475 if (range->ncprange_ip6width != cmp->ncprange_ip6width)
477 return !memcmp(&range->ncprange_ip6addr, &cmp->ncprange_ip6addr,
478 sizeof range->ncprange_ip6addr);
489 ncprange_isdefault(const struct ncprange *range)
491 switch (range->ncprange_family) {
493 if (range->ncprange_ip4addr.s_addr == INADDR_ANY)
499 if (range->ncprange_ip6width == 0 &&
500 IN6_IS_ADDR_UNSPECIFIED(&range->ncprange_ip6addr))
510 ncprange_setdefault(struct ncprange *range, int af)
512 memset(range, '\0', sizeof *range);
513 range->ncprange_family = af;
517 ncprange_contains(const struct ncprange *range, const struct ncpaddr *addr)
525 if (range->ncprange_family != addr->ncpaddr_family)
528 switch (range->ncprange_family) {
530 return !((addr->ncpaddr_ip4addr.s_addr ^ range->ncprange_ip4addr.s_addr) &
531 range->ncprange_ip4mask.s_addr);
535 rangep = (const u_char *)range->ncprange_ip6addr.s6_addr;
538 for (bits = range->ncprange_ip6width; bits > 0; bits -= 8)
550 ncprange_containsip4(const struct ncprange *range, struct in_addr addr)
552 switch (range->ncprange_family) {
554 return !((addr.s_addr ^ range->ncprange_ip4addr.s_addr) &
555 range->ncprange_ip4mask.s_addr);
562 ncprange_copy(struct ncprange *range, const struct ncprange *from)
566 range->ncprange_family = AF_INET;
567 range->ncprange_ip4addr = from->ncprange_ip4addr;
568 range->ncprange_ip4mask = from->ncprange_ip4mask;
569 range->ncprange_ip4width = from->ncprange_ip4width;
574 range->ncprange_family = AF_INET6;
575 range->ncprange_ip6addr = from->ncprange_ip6addr;
576 range->ncprange_ip6width = from->ncprange_ip6width;
581 range->ncprange_family = AF_UNSPEC;
586 ncprange_set(struct ncprange *range, const struct ncpaddr *addr, int width)
588 ncprange_sethost(range, addr);
589 ncprange_setwidth(range, width);
593 ncprange_sethost(struct ncprange *range, const struct ncpaddr *from)
597 range->ncprange_family = AF_INET;
598 range->ncprange_ip4addr = from->ncpaddr_ip4addr;
600 range->ncprange_ip4mask.s_addr = INADDR_ANY;
601 range->ncprange_ip4width = 0;
603 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
604 range->ncprange_ip4width = 32;
610 range->ncprange_family = AF_INET6;
611 range->ncprange_ip6addr = from->ncpaddr_ip6addr;
612 range->ncprange_ip6width = 128;
617 range->ncprange_family = AF_UNSPEC;
622 ncprange_ishost(const struct ncprange *range)
624 switch (range->ncprange_family) {
626 return range->ncprange_ip4width == 32;
629 return range->ncprange_ip6width == 128;
637 ncprange_setwidth(struct ncprange *range, int width)
639 switch (range->ncprange_family) {
643 range->ncprange_ip4width = width;
644 range->ncprange_ip4mask = bits2mask4(width);
651 range->ncprange_ip6width = width;
663 ncprange_setip4host(struct ncprange *range, struct in_addr from)
665 range->ncprange_family = AF_INET;
666 range->ncprange_ip4addr = from;
668 range->ncprange_ip4mask.s_addr = INADDR_ANY;
669 range->ncprange_ip4width = 0;
671 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
672 range->ncprange_ip4width = 32;
677 ncprange_setip4(struct ncprange *range, struct in_addr from, struct in_addr msk)
679 range->ncprange_family = AF_INET;
680 range->ncprange_ip4addr = from;
681 range->ncprange_ip4mask = msk;
682 range->ncprange_ip4width = mask42bits(msk);
687 ncprange_setip4mask(struct ncprange *range, struct in_addr mask)
689 if (range->ncprange_family != AF_INET)
691 range->ncprange_ip4mask = mask;
692 range->ncprange_ip4width = mask42bits(mask);
697 ncprange_setsa(struct ncprange *range, const struct sockaddr *host,
709 range->ncprange_family = AF_INET;
710 range->ncprange_ip4addr = host4->sin_addr;
712 range->ncprange_ip4mask.s_addr = INADDR_ANY;
713 range->ncprange_ip4width = 0;
715 range->ncprange_ip4mask.s_addr = mask4->sin_addr.s_addr;
716 range->ncprange_ip4width = mask42bits(mask4->sin_addr);
718 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
719 range
725 range->ncprange_family = AF_INET6;
726 range->ncprange_ip6addr = host6->sin6_addr;
728 range->ncprange_ip6width = 0;
730 range->ncprange_ip6width = mask6 ? mask62bits(&mask6->sin6_addr) : 128;
735 range->ncprange_family = AF_UNSPEC;
740 ncprange_getsa(const struct ncprange *range, struct sockaddr_storage *host,
754 switch (range->ncprange_family) {
758 host4->sin_addr = range->ncprange_ip4addr;
762 mask4->sin_addr = range->ncprange_ip4mask;
770 host6->sin6_addr = range->ncprange_ip6addr;
774 mask6->sin6_addr = bits2mask6(range->ncprange_ip6width);
788 ncprange_getaddr(const struct ncprange *range, struct ncpaddr *addr)
790 switch (range->ncprange_family) {
793 addr->ncpaddr_ip4addr = range->ncprange_ip4addr;
798 addr->ncpaddr_ip6addr = range->ncprange_ip6addr;
807 ncprange_getip4addr(const struct ncprange *range, struct in_addr *addr)
809 if (range->ncprange_family != AF_INET)
812 *addr = range->ncprange_ip4addr;
817 ncprange_getip4mask(const struct ncprange *range, struct in_addr *mask)
819 switch (range->ncprange_family) {
821 *mask = range->ncprange_ip4mask;
829 ncprange_getwidth(const struct ncprange *range, int *width)
831 switch (range->ncprange_family) {
833 *width = range->ncprange_ip4width;
837 *width = range->ncprange_ip6width;
846 ncprange_ntoa(const struct ncprange *range)
852 if (!ncprange_getaddr(range, &addr))
860 switch (range->ncprange_family) {
862 if (range->ncprange_ip4width == -1) {
868 (unsigned long)ntohl(range->ncprange_ip4mask.s_addr));
869 } else if (range->ncprange_ip4width < 32)
870 snprintf(res + len, sizeof res - len, "/%d", range->ncprange_ip4width);
876 if (range->ncprange_ip6width != 128)
877 snprintf(res + len, sizeof res - len, "/%d", range->ncprange_ip6width);
888 ncprange_scopeid(const struct ncprange *range)
893 if (range->ncprange_family == AF_INET6) {
894 sin6 = &range->ncprange_ip6addr;
905 ncprange_aton(struct ncprange *range, struct ncp *ncp, const char *data)
915 range->ncprange_family = AF_INET;
916 range->ncprange_ip4addr = ncp->ipcp.peer_ip;
917 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
918 range->ncprange_ip4width = 32;
922 range->ncprange_family = AF_INET6;
923 range->ncprange_ip6addr = ncp->ipv6cp.hisaddr.ncpaddr_ip6addr;
924 range->ncprange_ip6width = 128;
928 range->ncprange_family = AF_INET;
929 range->ncprange_ip4addr = ncp->ipcp.my_ip;
930 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
931 range->ncprange_ip4width = 32;
935 range->ncprange_family = AF_INET6;
936 range->ncprange_ip6addr = ncp->ipv6cp.myaddr.ncpaddr_ip6addr;
937 range->ncprange_ip6width = 128;
941 range->ncprange_family = AF_INET;
942 range->ncprange_ip4addr = ncp->ipcp.ns.dns[0];
943 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
944 range->ncprange_ip4width = 32;
947 range->ncprange_family = AF_INET;
948 range->ncprange_ip4addr = ncp->ipcp.ns.dns[1];
949 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
950 range->ncprange_ip4width = 32;
968 range->ncprange_family = AF_INET;
970 range->ncprange_ip4addr = GetIpAddr(s);
972 if (range->ncprange_ip4addr.s_addr == INADDR_NONE) {
977 if (range->ncprange_ip4addr.s_addr == INADDR_ANY) {
978 range->ncprange_ip4mask.s_addr = INADDR_ANY;
979 range->ncprange_ip4width = 0;
981 range->ncprange_ip4mask.s_addr = INADDR_BROADCAST;
982 range->ncprange_ip4width = 32;
987 range->ncprange_ip4mask = bits2mask4(bits);
988 range->ncprange_ip4width = bits;
994 range->ncprange_family = AF_INET6;
996 if (inet_pton(AF_INET6, s, &range->ncprange_ip6addr) != 1) {
1001 if (IN6_IS_ADDR_UNSPECIFIED(&range->ncprange_ip6addr))
1002 range->ncprange_ip6width = 0;
1004 range->ncprange_ip6width = (bits == -1) ? 128 : bits;