diff options
author | brian <brian@FreeBSD.org> | 1999-09-30 07:23:13 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1999-09-30 07:23:13 +0000 |
commit | f3bceef566234685610dbdd666fe891f89f4501d (patch) | |
tree | 122b4ca632e7da2408474ec5e53ecb4c582a3f96 /usr.sbin/ppp/filter.c | |
parent | 1fc218b67628314fd94ac6b188a33a35873298be (diff) | |
download | FreeBSD-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.c | 25 |
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 * |