29 static bool stPolicyLookupDomain(
char *prefix,
char *key,
char *buf,
30 size_t size,
bool recurse,
33 static bool stPolicyLookupIPv4Addr(
char *prefix,
char *key,
char *buf,
34 size_t size,
bool recurse,
37 static bool stPolicyLookupIPv6Addr(
char *prefix,
char *key,
char *buf,
38 size_t size,
bool recurse,
40 static bool stPolicyLookupNetClass(
char *addr,
char *name,
42 size_t size,
bool recurse);
44 static bool stPolicyLookupEmailAddr(
char *prefix,
char *key,
45 char *buf,
size_t size,
46 bool recurse,
bool chkDefault);
57 for (; *s !=
'\0'; s++) {
60 snprintf(tbuf,
sizeof (tbuf),
"%02x ", *s);
61 strlcat(buf, tbuf,
sizeof (buf));
71 #define FILL_NETCLASS(cPtr, label, equiv, class) \ 73 memset((cPtr), 0, sizeof(cPtr)); \ 75 if ((label) != NULL) \ 77 strlcpy((cPtr)->label, 0, sizeof((cPtr)->label)); \ 80 if ((equiv) != NULL) \ 81 strlcpy((cPtr)->equiv, 0, sizeof((cPtr)->equiv)); \ 82 (cPtr)->class = NET_UNKNOWN; \ 103 if (key == NULL || strlen(key) == 0)
121 if (netClass != NULL && netClass->
ok)
130 if (gClass.
ok && strlen(gClass.
equiv) == 0) {
132 sizeof (gClass.
equiv));
136 if (strlen(gClass.
label) > 0) {
141 if (strlen(gClass.
equiv) > 0) {
149 ok = stPolicyLookupIPv4Addr(prefix, addr, buf, bufSize,
TRUE,
FALSE);
154 ok = stPolicyLookupDomain(prefix, name, buf, bufSize,
TRUE,
FALSE);
179 return stPolicyLookupDomain(prefix, key, buf, size,
TRUE,
TRUE);
193 return stPolicyLookupIPv4Addr(prefix, key, buf, size,
TRUE,
TRUE);
207 return stPolicyLookupIPv6Addr(prefix, key, buf, size,
TRUE,
TRUE);
222 return stPolicyLookupNetClass(addr, name,
class, buf, size,
TRUE);
236 return stPolicyLookupEmailAddr(prefix, key, buf, size,
TRUE,
TRUE);
289 stPolicyLookupDomain(prefix, key, buf, bufSize, recurse, chkDefault)
303 if (key == NULL || strlen(key) == 0)
311 domKey = strdup(key);
312 if (domKey == NULL) {
317 for (i = 0; i < argc && !
ok; i++) {
321 lKey =
zeStrJoin(
".", argc - i, &argv[i]);
329 if (!ok && chkDefault)
331 if (!ok && chkDefault)
343 stPolicyLookupIPv4Addr(prefix, key, buf, bufSize, recurse, chkDefault)
352 char *addrKey = NULL;
357 if (key == NULL || strlen(key) == 0)
365 addrKey = strdup(key);
366 if (addrKey == NULL) {
371 for (i = argc - 1; i > 0 && !
ok; i--) {
382 if (!ok && chkDefault)
384 if (!ok && chkDefault)
395 stPolicyLookupIPv6Addr(prefix, key, buf, bufSize, recurse, chkDefault)
404 char *addrKey = NULL;
409 if (key == NULL || strlen(key) == 0)
417 addrKey = strdup(key);
418 if (addrKey == NULL) {
423 for (i = argc; i > 0 && !
ok; i--) {
434 if (!ok && chkDefault)
436 if (!ok && chkDefault)
447 stPolicyLookupNetClass(addr, name,
class, buf, bufSize, recurse)
457 if ((addr == NULL || strlen(addr) == 0)
458 && (name == NULL || strlen(name) == 0))
466 char *addrKey = NULL;
471 addrKey = strdup(addr);
472 if (addrKey == NULL) {
477 for (i = argc - 1; i > 0 && !
ok; i--) {
496 char *nameKey = NULL;
501 nameKey = strdup(name);
502 if (nameKey == NULL) {
507 for (i = 0; i < argc && !
ok; i++) {
511 lKey =
zeStrJoin(
".", argc - i, &argv[i]);
523 if (ok &&
class != NULL) {
527 memset(
class, 0,
sizeof (*
class));
530 strlcpy(class->label, buf, sizeof (class->label));
535 strlcpy(class->equiv, tBuf, sizeof (class->equiv));
548 stPolicyLookupEmailAddr(prefix, key, buf, bufSize, recurse, chkDefault)
557 char *emailKey = NULL;
560 char *userKey = NULL, *domKey = NULL, *p;
562 if (key == NULL || strlen(key) == 0)
572 emailKey = strdup(key);
573 if (emailKey == NULL) {
577 if ((p =
strchr(emailKey,
'@')) != NULL) {
586 if (strlen(domKey) > 0) {
587 snprintf(kBuf,
sizeof (kBuf),
"%s@%s",
"*", domKey);
594 if (strlen(domKey) > 0) {
601 char *argv[32], *argvT[32];
606 memcpy(argvT, argv,
sizeof (argvT));
607 for (i = 0; i < argc && !
ok; i++) {
611 lKey =
zeStrJoin(
".", argc - i, &argvT[i]);
613 snprintf(kBuf,
sizeof (kBuf),
"%s@%s", userKey, lKey);
620 snprintf(kBuf,
sizeof (kBuf),
"%s@%s",
"*", lKey);
634 snprintf(kBuf,
sizeof (kBuf),
"%s@%s",
"*",
"*");
642 if (!ok && chkDefault)
644 if (!ok && chkDefault)
char * zeStrJoin(char *, int, char **)
bool PolicyLookupIPv6Addr(char *prefix, char *key, char *buf, size_t size)
bool PolicyLookupEmailAddr(char *prefix, char *key, char *buf, size_t size)
#define NETCLASS_INITIALIZER
bool db_policy_lookup(char *prefix, char *key, char *bufout, size_t szbuf)
bool PolicyLookupDomain(char *prefix, char *key, char *buf, size_t size)
int zeStr2Tokens(char *, int, char **, char *)
bool PolicyLookupNetClass(char *addr, char *name, netclass_T *class, char *buf, size_t size)
bool PolicyLookupIPv4Addr(char *prefix, char *key, char *buf, size_t size)
bool PolicyLookupClient(char *prefix, char *addr, char *name, netclass_T *netClass, char *buf, size_t bufSize)
#define ZE_MessageInfo(level,...)
#define ZE_LogSysError(...)
bool PolicyLookupTuple(char *prefix, char *addr, char *name, char *netclass, char *from, char *to, bool result)
#define STRCASEEQUAL(a, b)
int DecodeNetClass(char *, char *, size_t)