/*
- * $Id: acl.cc,v 1.120 1997/11/21 01:59:14 wessels Exp $
+ * $Id: acl.cc,v 1.121 1997/12/05 19:30:03 wessels Exp $
*
* DEBUG: section 28 Access Control
* AUTHOR: Duane Wessels
return ACL_SRC_ASN;
if (!strcmp(s, "dst_as"))
return ACL_DST_ASN;
+#if USE_ARP_ACL
+ if (!strcmp(s, "arp"))
+ return ACL_SRC_ARP;
+#endif
return ACL_NONE;
}
case ACL_DST_ASN:
aclParseIntlist(&A->data);
break;
+#if USE_ARP_ACL
+ case ACL_SRC_ARP:
+ aclParseArpList(&A->data);
+ break;
+#endif
case ACL_NONE:
default:
fatal("Bad ACL type");
case ACL_DST_ASN:
assert(0);
return 0;
+#if USE_ARP_ACL
+ case ACL_SRC_ARP:
+ return aclMatchArp(&acl->data, checklist->src_addr);
+#endif
case ACL_NONE:
default:
debug(28, 0) ("aclMatchAcl: '%s' has bad type %d\n",
-
extern void accessLogLog(AccessLogEntry *);
extern void accessLogRotate(void);
extern void accessLogClose(void);
extern int aclMatchRegex(relist * data, const char *word);
extern void aclParseRegexList(void *curlist);
+#if USE_ARP_ACL
+extern int checkARP(u_long ip, char *eth);
+extern int decode_eth(const char *asc, char *eth);
+extern int aclMatchArp(void *dataptr, struct in_addr c);
+#if USE_SPLAY_TREE
+extern int aclArpNetworkCompare(const void *, splayNode *);
+extern void aclParseArpList(void *curlist);
+#elif USE_BIN_TREE
+extern int bintreeArpNetworkCompare(void *, void *);
+extern void aclParseArpList(void **curtree);
+#endif
+extern void aclParseArpList(void *curlist);
+#endif
extern int aio_cancel(aio_result_t *);
extern int aio_open(const char *, int, mode_t, aio_result_t *);
extern void dlinkAdd(void *data, dlink_node *, dlink_list *);
extern void dlinkDelete(dlink_node * m, dlink_list * list);
+
+/*
+ * prototypes for system functions missing from system includes
+ */
+
+#ifdef _SQUID_SOLARIS_
+int getrusage(int, struct rusage *);
+int getpagesize(void);
+int gethostname(char *, int);
+#endif