Subject: Re: Does ATM on NetBSD work ?
To: Kenjiro Cho <kjc@csl.sony.co.jp>
From: Darren Reed <darrenr@reed.wattle.id.au>
List: tech-net
Date: 11/20/2000 00:17:49
Hmmm, ok.  On NetBSD, I do:

# ifconfig en0 192.168.10.1 netmask 255.255.255.0 up
# route add -iface 192.168.10.2 -link en0:3.0.0.64
# pvcsif en0
# ifconfig pvc0 192.168.10.1 192.168.10.2 netmask 255.255.255.0
# ifconfig pvc0
# pvctxctl pvc0 100 -p 0


I'm connecting to a FORE adapter on Solaris7 and with foredebug,
I see this output when trying to ping (crossover ATM cable):

...
Nov 19 23:18:21 kay: clipos_parse_arpreq: target ip_addr=192.168.10.1
Nov 19 23:18:21 kay: clip_InterfaceARPSend: clip=f649b7b8 interfacep=f655fbf0 ipAddr=192.168.10.1
Nov 19 23:18:21 kay: clip_InterfaceARPSend failed: clip_arp_CreateARP failed=ffffffff ipAddr=192.168.10.1
Nov 19 23:18:21 kay: clip_InterfaceARPSend: clip=f649b7b8 interfacep=f655fbf0 ipAddr=192.168.10.1
Nov 19 23:18:21 kay: clip_InterfaceARPSend failed: clip_arp_CreateARP failed=ffffffff ipAddr=192.168.10.1
Nov 19 23:18:29 kay: clip_GetPVCAddr: clp=f649b7b8 ccp=f6244880, circuitp=f60bedc0 cflags=34
...

So the PVC is working (sort of).  On Solaris7:
# /opt/FOREatm/bin/clipconfig add -if ci0
# /opt/FOREatm/bin/cliparp add -pvc 0 100 llc_routed ci0
# ifconfig ci0 plumb
# ifconfig ci0 `cat /etc/hostname.ci0` up
# clipconfig show
Interface               : ci0
Configured unit         : 0
ARP Server address      : PVCs only
MTU                     : 9180

If I add the cliparp as follows:
# /opt/FOREatm/bin/cliparp add -pvc 0 100 llc_bridged 0:0:0:0:0:0 ci0 \
192.168.10.1
# cliparp show
192.168.10.1: PVC (llc_bridged with dest MAC 00.00.00.00.00.00)
        interface=ci0 flags=() unit=0 vpi/vci=0/100

it almost works - Solaris7 sees it and replies but the reply comes back
like this:

# tcpdump -evni pvc0
23:39:56.499976 aa aa 03 00-00-00 0800: 192.168.10.1 > 192.168.10.2: icmp: echo request (ttl 255, id 7371)
                         4500 0054 1ccb 0000 ff01 098a c0a8 0a01
                         c0a8 0a02 0800 64e9 0536 0000 3a17 ca1c
                         0007 9ea2 0809 0a0b 0c0d 0e0f 1011 1213
                         1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
                         2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
                         3435 3637
23:39:56.500668 f03a0030a70696e 67205b2d4510002b 40 06 c4 9f-c0-a8 0c02: 
                         89be 4000 ff01 5c96 c0a8 0a02 c0a8 0a01
                         0000 6ce9 0536 0000 3a17 ca1c 0007 9ea2
                         0809 0a0b 0c0d 0e0f 1011 1213 1415 1617
                         1819 1a1b 1c1d 1e1f 2021 2223 2425 2627
                         2829 2a2b 2c2d 2e2f 3031 3233 3435 3637

...and ping doesn't work from Solaris7 either:
23:42:39.933222 f03a003080c20007 00000000 00 00 08 00-45-00 0054: 
                         89c7 4000 ff01 5c8d c0a8 0a02 c0a8 0a01
                         0800 0862 029f 0001 3a17 ca6d 0001 fd74
                         0809 0a0b 0c0d 0e0f 1011 1213 1415 1617
                         1819 1a1b 1c1d 1e1f 2021 2223 2425 2627
                         2829 2a2b 2c2d 2e2f 3031 3233 3435 3637

So then I deleted the bridge setup and add it back as routed:
# cliparp delete -pvc 0 100 ci0
# /opt/FOREatm/bin/cliparp add -pvc 0 100 llc_routed ci0 192.168.10.1

and ping works *once*:

23:50:18.505287 aa aa 03 00-00-00 0800: 192.168.10.2 > 192.168.10.1: icmp: echo request (DF) (ttl 255, id 35280)
                         4500 0054 89d0 4000 ff01 5c84 c0a8 0a02
                         c0a8 0a01 0800 f994 02a5 0000 3a17 cc39
                         0000 0a72 0809 0a0b 0c0d 0e0f 1011 1213
                         1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
                         2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
                         3435 3637
23:50:18.505965 aa aa 03 00-00-00 0800: 192.168.10.1 > 192.168.10.2: icmp: echo reply (DF) (ttl 255, id 7619)
                         4500 0054 1dc3 4000 ff01 c891 c0a8 0a01
                         c0a8 0a02 0000 0195 02a5 0000 3a17 cc39
                         0000 0a72 0809 0a0b 0c0d 0e0f 1011 1213
                         1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
                         2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
                         3435 3637

and if I delete the arp entry from the Solaris box, it works again, once...
manually adding an ARP entry with "0:0:0:0:0:0" as the MAC address causes
Solaris to panic :-)  From Solaris, a tcpdump from "ci0":

# tcpdump -s 256 -xnvi ci0
tcpdump: listening on ci0
00:09:10.995115 arp who-has 192.168.10.1 (ff:ff:ff:ff:ff:ff) tell 192.168.10.2 (0:20:48:6:9:8a) /+..............
         0001 0800 0604 0001 0020 4806 098a c0a8        ......... H.....
         0a02 ffff ffff ffff c0a8 0a01                  ............
00:09:10.995263 arp reply 192.168.10.1 (2:0:c0:a8:a:1) is-at 2:0:c0:a8:a:1 (6:0:c0:a8:a:2)      /...............
         0001 0800 0604 0002 0200 c0a8 0a01 c0a8        ................
         0a01 0600 c0a8 0a02 c0a8 0a02                  ............
00:09:10.995334 arp reply 192.168.10.1 (2:0:c0:a8:a:1) is-at 2:0:c0:a8:a:1 (6:0:c0:a8:a:2)      0...............
         0001 0800 0604 0002 0200 c0a8 0a01 c0a8        ................
         0a01 0600 c0a8 0a02 c0a8 0a02                  ............
00:09:10.995396 arp reply 192.168.10.1 (2:0:c0:a8:a:1) is-at 2:0:c0:a8:a:1 (6:0:c0:a8:a:2)      0D..............
         0001 0800 0604 0002 0200 c0a8 0a01 c0a8        ................
         0a01 0600 c0a8 0a02 c0a8 0a02                  ............
00:09:10.995443 arp reply 192.168.10.1 (2:0:c0:a8:a:1) is-at 2:0:c0:a8:a:1 (6:0:c0:a8:a:2)      0s..............
         0001 0800 0604 0002 0200 c0a8 0a01 c0a8        ................
         0a01 0600 c0a8 0a02 c0a8 0a02                  ............
00:09:10.996544 0:0:0:0:0:0 0:0:0:0:0:0 4000 90:        4.............@.
         ff01 ac53 c0a8 0a02 c0a8 0a01 0800 d320        ...S........... 
         0288 0000 3a17 d0f6 000f 2c37 0809 0a0b        ....:.....,7....
         0c0d 0e0f 1011 1213 1415 1617 1819 1a1b        ................
         1c1d 1e1f 2021 2223 2425 2627 2829 2a2b        .... !"#$%&'()*+
         2c2d 2e2f 3031 3233 3435 3637                  ,-./01234567
00:09:10.997585 192.168.10.1 > 192.168.10.2: icmp: echo reply (DF) (ttl 255, id 7775)   8...............
         4500 0054 1e5f 4000 ff01 c7f5 c0a8 0a01        E..T._@.........
         c0a8 0a02 0000 db20 0288 0000 3a17 d0f6        ....... ....:...
         000f 2c37 0809 0a0b 0c0d 0e0f 1011 1213        ..,7............
         1415 1617 1819 1a1b 1c1d 1e1f 2021 2223        ............ !"#
         2425 2627 2829 2a2b 2c2d 2e2f 3031 3233        $%&'()*+,-./0123
         3435 3637                                      4567

The ARP packets are never seen on NetBSD, be it on en0 or pvc0, with tcpdump.
Is this a bug ?  How do we see them there ?

Darren