Use ip_send() to not call ip_output() recursively in *start() routine.
authormpi <mpi@openbsd.org>
Mon, 22 Jan 2018 09:06:22 +0000 (09:06 +0000)
committermpi <mpi@openbsd.org>
Mon, 22 Jan 2018 09:06:22 +0000 (09:06 +0000)
ok visa@

sys/net/if_etherip.c

index e4e3c43..c304fcd 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_etherip.c,v 1.29 2018/01/09 15:24:24 bluhm Exp $   */
+/*     $OpenBSD: if_etherip.c,v 1.30 2018/01/22 09:06:22 mpi Exp $     */
 /*
  * Copyright (c) 2015 Kazuya GODA <goda@openbsd.org>
  *
@@ -394,7 +394,8 @@ ip_etherip_output(struct ifnet *ifp, struct mbuf *m)
        etheripstat_pkt(etherips_opackets, etherips_obytes, m->m_pkthdr.len -
            (sizeof(struct ip) + sizeof(struct etherip_header)));
 
-       return ip_output(m, NULL, NULL, IP_RAWOUTPUT, NULL, NULL, 0);
+       ip_send(m);
+       return (0);
 }
 
 int
@@ -546,7 +547,8 @@ ip6_etherip_output(struct ifnet *ifp, struct mbuf *m)
        etheripstat_pkt(etherips_opackets, etherips_obytes, m->m_pkthdr.len -
            (sizeof(struct ip6_hdr) + sizeof(struct etherip_header)));
 
-       return ip6_output(m, 0, NULL, IPV6_MINMTU, 0, NULL);
+       ip6_send(m);
+       return (0);
 
 drop:
        m_freem(m);