summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2000-10-12 07:59:14 +0000
committerru <ru@FreeBSD.org>2000-10-12 07:59:14 +0000
commit26ce601f70d9658c4c6e5326220f41872924930e (patch)
treea2407f29ccbc751a39609730dfe9dac082121bff /sys/netinet
parentacecaa1fc20521bb074aac431cdae4193ce27ee6 (diff)
downloadFreeBSD-src-26ce601f70d9658c4c6e5326220f41872924930e.zip
FreeBSD-src-26ce601f70d9658c4c6e5326220f41872924930e.tar.gz
Allow for IP_FW_ADD to be used in getsockopt(2) incarnation as
well, in which case return the rule number back into userland. PR: bin/18351 Reviewed by: archie, luigi
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/ip_fw.c4
-rw-r--r--sys/netinet/raw_ip.c1
2 files changed, 4 insertions, 1 deletions
diff --git a/sys/netinet/ip_fw.c b/sys/netinet/ip_fw.c
index e81b159..e156895 100644
--- a/sys/netinet/ip_fw.c
+++ b/sys/netinet/ip_fw.c
@@ -1512,7 +1512,7 @@ add_entry(struct ip_fw_head *chainptr, struct ip_fw *frwl)
}
if (nbr < IPFW_DEFAULT_RULE - 100)
nbr += 100;
- ftmp->fw_number = nbr;
+ ftmp->fw_number = frwl->fw_number = nbr;
}
/* Got a valid number; now insert it, keeping the list ordered */
@@ -1928,6 +1928,8 @@ ip_fw_ctl(struct sockopt *sopt)
error = EINVAL;
} else {
error = add_entry(&ip_fw_chain, &frwl);
+ if (!error && sopt->sopt_dir == SOPT_GET)
+ error = sooptcopyout(sopt, &frwl, sizeof frwl);
}
break;
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 5d056ce..5544782 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -259,6 +259,7 @@ rip_ctloutput(so, sopt)
error = sooptcopyout(sopt, &optval, sizeof optval);
break;
+ case IP_FW_ADD:
case IP_FW_GET:
if (ip_fw_ctl_ptr == 0)
error = ENOPROTOOPT;
OpenPOWER on IntegriCloud