diff options
author | Maxim Sobolev <sobomax@FreeBSD.org> | 2004-01-30 09:03:01 +0000 |
---|---|---|
committer | Maxim Sobolev <sobomax@FreeBSD.org> | 2004-01-30 09:03:01 +0000 |
commit | 4c83789253b997e78437b5564459f3d51b557b00 (patch) | |
tree | 3df42d90bb8eb699080d9bc3517350f8f51d76ea | |
parent | 9148fa21dd029d470962b252889bf923b7a431d5 (diff) | |
download | src-4c83789253b997e78437b5564459f3d51b557b00.tar.gz src-4c83789253b997e78437b5564459f3d51b557b00.zip |
Remove NetBSD'isms (add FreeBSD'isms?), which makes gre(4) working again.
Notes
Notes:
svn path=/head/; revision=125226
-rw-r--r-- | sys/net/if_gre.c | 5 | ||||
-rw-r--r-- | sys/netinet/ip_gre.c | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index aab706833353..254d9a3b33f8 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -351,8 +351,7 @@ gre_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst, gh = mtod(m, struct greip *); if (sc->g_proto == IPPROTO_GRE) { /* we don't have any GRE flags for now */ - - memset((void *)&gh->gi_g, 0, sizeof(struct gre_h)); + memset((void *)gh, 0, sizeof(struct greip)); gh->gi_ptype = htons(etype); } @@ -364,7 +363,7 @@ gre_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst, ((struct ip*)gh)->ip_ttl = GRE_TTL; ((struct ip*)gh)->ip_tos = ip->ip_tos; ((struct ip*)gh)->ip_id = ip->ip_id; - gh->gi_len = htons(m->m_pkthdr.len); + gh->gi_len = m->m_pkthdr.len; } ifp->if_opackets++; diff --git a/sys/netinet/ip_gre.c b/sys/netinet/ip_gre.c index ad9ed3066b62..960b8a813651 100644 --- a/sys/netinet/ip_gre.c +++ b/sys/netinet/ip_gre.c @@ -204,8 +204,8 @@ gre_input2(struct mbuf *m ,int hlen, u_char proto) m_freem(m); return (EINVAL); } + /* Unlike NetBSD, in FreeBSD m_adj() adjusts m->m_pkthdr.len as well */ m_adj(m, hlen); - m->m_pkthdr.len -= hlen; if (sc->sc_if.if_bpf) { u_int32_t af = AF_INET; |