1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-01 05:45:45 +00:00
freebsd-ports/mail/spamd/files/patch-spamd-setup
Xin LI 82546d5db1 Remove a mispatch sneaked in the previous revision.
Reported by:	B. Cook <bcook bsdwebsolutions com>
Approved by:	sem (mentor)
2006-05-10 17:55:07 +00:00

111 lines
1.9 KiB
Plaintext

--- spamd-setup/spamd-setup.c.orig Wed Apr 13 01:18:59 2005
+++ spamd-setup/spamd-setup.c Wed May 10 01:55:13 2006
@@ -41,6 +41,11 @@
#include <netdb.h>
#include <zlib.h>
+#ifdef IPFW
+#include <net/if.h>
+#include <netinet/ip_fw.h>
+#endif
+
#define PATH_FTP "/usr/bin/ftp"
#define PATH_PFCTL "%%LOCAL_PFCTL%%"
#define PATH_SPAMD_CONF "%%LOCAL_SPAMD_CONF%%"
@@ -93,6 +98,11 @@
int debug;
int dryrun;
+#ifdef IPFW
+int tabno=2;
+#endif
+
+
u_int32_t
imask(u_int8_t b)
{
@@ -630,6 +640,7 @@
}
+#ifndef IPFW
int
configure_pf(struct cidr **blacklists)
{
@@ -676,6 +687,51 @@
}
return(0);
}
+#else
+int
+configure_pf(struct cidr **blacklists)
+{
+ static int s = -1;
+ ipfw_table_entry ent;
+
+ if (s == -1)
+ s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
+ if (s < 0)
+ {
+ err(1, "IPFW socket unavailable");
+ return(-1);
+ }
+
+ /* flush the table */
+ ent.tbl = tabno;
+ if (setsockopt(s, IPPROTO_IP, IP_FW_TABLE_FLUSH, &ent.tbl, sizeof(ent.tbl)) < 0)
+ {
+ err(1, "IPFW setsockopt(IP_FW_TABLE_FLUSH)");
+ return(-1);
+ }
+
+ while (*blacklists != NULL) {
+ struct cidr *b = *blacklists;
+
+ while (b->addr != 0) {
+ /* add b to tabno */
+ ent.tbl = tabno;
+ ent.masklen = b->bits;
+ ent.value = 0;
+ inet_aton(atop(b->addr), (struct in_addr *)&ent.addr);
+ if (setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent)) < 0)
+ {
+ err(1, "IPFW setsockopt(IP_FW_TABLE_ADD)");
+ return(-1);
+ }
+ b++;
+ }
+ blacklists++;
+ }
+
+ return(0);
+}
+#endif
int
getlist(char ** db_array, char *name, struct blacklist *blist,
@@ -773,7 +829,11 @@
struct servent *ent;
int i, ch;
+#ifndef IPFW
while ((ch = getopt(argc, argv, "nd")) != -1) {
+#else
+ while ((ch = getopt(argc, argv, "ndt")) != -1) {
+#endif
switch (ch) {
case 'n':
dryrun = 1;
@@ -781,6 +841,11 @@
case 'd':
debug = 1;
break;
+#ifdef IPFW
+ case 't':
+ tabno = atoi(optarg);
+ break;
+#endif
default:
break;
}