diff options
Diffstat (limited to 'usr.sbin/ppp/ip.c')
| -rw-r--r-- | usr.sbin/ppp/ip.c | 22 |
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) { |
