summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/filter.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1999-09-30 07:23:13 +0000
committerbrian <brian@FreeBSD.org>1999-09-30 07:23:13 +0000
commitf3bceef566234685610dbdd666fe891f89f4501d (patch)
tree122b4ca632e7da2408474ec5e53ecb4c582a3f96 /usr.sbin/ppp/filter.c
parent1fc218b67628314fd94ac6b188a33a35873298be (diff)
downloadFreeBSD-src-f3bceef566234685610dbdd666fe891f89f4501d.zip
FreeBSD-src-f3bceef566234685610dbdd666fe891f89f4501d.tar.gz
Support GRE packets
Submitted by: Harry Starr <starr@gccs.com.au>
Diffstat (limited to 'usr.sbin/ppp/filter.c')
-rw-r--r--usr.sbin/ppp/filter.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/usr.sbin/ppp/filter.c b/usr.sbin/ppp/filter.c
index 1669466..217c177 100644
--- a/usr.sbin/ppp/filter.c
+++ b/usr.sbin/ppp/filter.c
@@ -277,6 +277,24 @@ ParseIgmp(int argc, char const * const *argv, struct filterent *tgt)
return 1;
}
+#ifdef P_GRE
+static int
+ParseGRE(int argc, char const * const *argv, struct filterent *tgt)
+{
+ /*
+ * Filter currently is a catch-all. Requests are either permitted or
+ * dropped.
+ */
+ if (argc != 0) {
+ log_Printf(LogWARN, "ParseGRE: Too many parameters\n");
+ return 0;
+ } else
+ tgt->f_srcop = OP_NONE;
+
+ return 1;
+}
+#endif
+
#ifdef P_OSPF
static int
ParseOspf(int argc, char const * const *argv, struct filterent *tgt)
@@ -458,6 +476,11 @@ Parse(struct ipcp *ipcp, int argc, char const *const *argv,
val = ParseOspf(argc, argv, &filterdata);
break;
#endif
+#ifdef P_GRE
+ case P_GRE:
+ val = ParseGRE(argc, argv, &filterdata);
+ break;
+#endif
}
log_Printf(LogDEBUG, "Parse: Src: %s\n", inet_ntoa(filterdata.f_src.ipaddr));
@@ -596,7 +619,7 @@ filter_Show(struct cmdargs const *arg)
}
static const char *protoname[] = {
- "none", "tcp", "udp", "icmp", "ospf", "igmp"
+ "none", "tcp", "udp", "icmp", "ospf", "igmp", "gre"
};
const char *
OpenPOWER on IntegriCloud