Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Dec 2002 19:41:32 +0900
From:      Motoyuki Konno <motoyuki@bsdclub.org>
To:        Ian Dowse <iedowse@FreeBSD.org>
Cc:        motoyuki@bsdclub.org, freebsd-bugs@FreeBSD.org
Subject:   Re: kern/33653: DSL PPPoE connection error on 4.5-PRERELEASE
Message-ID:  <200212021041.gB2AfWQk000564@sakura.mk.bsdclub.org>
References:  <200212012111.gB1LBT8g080962@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Ian Dowse <iedowse@FreeBSD.org> wrote:
> Synopsis: DSL PPPoE connection error on 4.5-PRERELEASE
> 
> State-Changed-From-To: open->feedback
> State-Changed-By: iedowse
> State-Changed-When: Sun Dec 1 13:11:06 PST 2002
> State-Changed-Why: 
> 
> Does this problem still occur with more recent releases?
> 
> http://www.freebsd.org/cgi/query-pr.cgi?pr=33653

I'm sorry I've forgotten to write follow-ups.

I've examined this problem since I submitted this PR.  I think
this is IPv6 problem.


1.  ppp hangs up at physical_Write() in src/usr.sbin/ppp/physical.c.
    I found that write() in physical_Write() failed.

2.  When write() faied,  physical_Write() tries to write following
    data.

------
00 21 60 06 62 c2 00 20 06 40 3f fe 05 05 20 22  .!`.b.. .@?... " 
00 00 00 00 00 00 00 00 00 01 20 01 02 18 04 99  .......... ..... 
00 01 00 00 00 00 00 00 00 02 00 50 0d d5 ac 44  ...........P...D 
35 29 44 e3 14 c1 80 11 81 c4 08 fd 00 00 01 01  5)D............. 
08 0a 00 1b b3 63 00 30 63 3a 63 2e              .....c.0c:c.
------

    First 2 bytes (0x00 0x21) tells that this is PPP encapsulated
    data (RFC 1548).  Third byte (0x60) tells that this is IPv6
    packet.

3.  ppp calculates the size of packet using bit 16-31 of IP header
    (Total Length field of IPv4 header).  bit 16-31 of IPv6
    header is "Flow Label", not "Total Length".  So, when ppp tries
    to write IPv6 packet to ppp line,  the size of data size must
    be illegal.

4.  How to prevent this problem is:

    # ip6fw add deny all from any to any via tun*

5.  I think the reasons of this problem are:

    o  /usr/sbin/ppp cannot recognize IPv6 packet
    o  kernel sends IPv6 packet to tun* interface which does not
       have IPv6 address.

6.  Now, I'm using FreeBSD 4.7-STABLE.  Here is the ip6fw log:

--------
Dec  2 10:23:08 mserver /kernel: ip6fw: 2000 Deny P:0 [fe80::02d0:b7ff:fe83:3679] [ff02::0001:ff83:3679] out via tun1
Dec  2 10:23:08 mserver /kernel: ip6fw: 2000 Deny P:0 [fe80::02d0:b7ff:fe83:3679] [ff02::0002:f470:729c] out via tun1
Dec  2 10:23:08 mserver /kernel: ip6fw: 2000 Deny IPV6-ICMP:135.0 [::] [ff02::0001:ff83:3679] out via tun1
--------

   It seems that kernel tries to write illegal IPv6 packets to
   tun* (ppp).

--
------------------------------------------------------------------------
Motoyuki Konno                  motoyuki@bsdclub.org             (Home)
                                motoyuki@FreeBSD.ORG  (FreeBSD Project)
                                http://www.freebsd.org/~motoyuki/ (WWW)

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200212021041.gB2AfWQk000564>