summaryrefslogtreecommitdiff
path: root/usr.sbin/ppp/ip.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/ppp/ip.c')
-rw-r--r--usr.sbin/ppp/ip.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c
index f1219d000d12..2e5f00c21efa 100644
--- a/usr.sbin/ppp/ip.c
+++ b/usr.sbin/ppp/ip.c
@@ -170,6 +170,15 @@ FilterCheck(const struct ip *pip, const struct filter *filter)
estab = syn = finrst = -1;
sport = ntohs(0);
break;
+#ifdef IPPROTO_GRE
+ case IPPROTO_GRE:
+ cproto = P_GRE;
+ if (datalen < 2) /* GRE uses 2-octet+ messages */
+ return (1);
+ estab = syn = finrst = -1;
+ sport = ntohs(0);
+ break;
+#endif
#ifdef IPPROTO_OSPFIGP
case IPPROTO_OSPFIGP:
cproto = P_OSPF;
@@ -360,6 +369,19 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter)
}
break;
+#ifdef IPPROTO_GRE
+ case IPPROTO_GRE:
+ if (logit && loglen < sizeof logbuf) {
+ snprintf(logbuf + loglen, sizeof logbuf - loglen,
+ "GRE: %s ---> ", inet_ntoa(pip->ip_src));
+ loglen += strlen(logbuf + loglen);
+ snprintf(logbuf + loglen, sizeof logbuf - loglen,
+ "%s", inet_ntoa(pip->ip_dst));
+ loglen += strlen(logbuf + loglen);
+ }
+ break;
+#endif
+
#ifdef IPPROTO_OSPFIGP
case IPPROTO_OSPFIGP:
if (logit && loglen < sizeof logbuf) {