Lines Matching refs:prefix
1 /* $KAME: prefix.c,v 1.13 2003/09/02 22:50:17 itojun Exp $ */
48 #include "prefix.h"
50 static int prefix_set(const char *, struct prefix *, int);
61 prefix_set(const char *s, struct prefix *prefix, int slash)
83 if (res->ai_next || res->ai_addrlen > sizeof(prefix->a))
85 memcpy(&prefix->a, res->ai_addr, res->ai_addrlen);
87 switch (prefix->a.ss_family) {
101 prefix->l = (int)strtoul(q, &r, 10);
104 if (prefix->l < 0 || prefix->l > max)
107 prefix->l = max;
124 prefix_string(const struct prefix *prefix)
129 if (getnameinfo((const struct sockaddr *)&prefix->a, prefix->a.ss_len,
132 snprintf(buf, sizeof(buf), "%s/%d", hbuf, prefix->l);
137 prefix_match(const struct prefix *prefix, const struct sockaddr *sa)
143 if (prefix->a.ss_family != sa->sa_family ||
144 prefix->a.ss_len != sa->sa_len)
147 if (prefix->a.ss_len > sizeof(a) || sa->sa_len > sizeof(b))
150 switch (prefix->a.ss_family) {
158 if (memcmp(&prefix->a, sa, prefix->a.ss_len) != 0)
164 memcpy(&a, &prefix->a, prefix->a.ss_len);
166 l = prefix->l / 8 + (prefix->l % 8 ? 1 : 0);
174 if (prefix->l % 8) {
175 pa[prefix->l / 8] &= 0xff00 >> (prefix->l % 8);
176 pb[prefix->l / 8] &= 0xff00 >> (prefix->l % 8);
185 * prefix/prefixlen permit/deny prefix/prefixlen [srcaddr]