Public bug reported:

The netplan.io autopkgtests started failing a while ago on Plucky VMs.
The armhf based containers are unaffected, pointing towards a kernel
issue.

Local reproducer: autopkgtest -U -B netplan.io --test-name=tunnels -s --
qemu /data/autopkgtest-plucky-amd64.img

=> see the following failure:

======================================================================
ERROR: test_tunnel_vxlan (__main__.TestNetworkd.test_tunnel_vxlan)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/autopkgtest.oVutZW/tree/tests/integration/tunnels.py", line 281, 
in test_tunnel_vxlan
    json = self.iface_json('vx0')
  File "/tmp/autopkgtest.oVutZW/tree/tests/integration/base.py", line 315, in 
iface_json
    json_dict = json.loads(out)
  File "/usr/lib/python3.13/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^
  File "/usr/lib/python3.13/json/decoder.py", line 345, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/json/decoder.py", line 361, in raw_decode
    obj, end = self.scan_once(s, idx)
               ~~~~~~~~~~~~~~^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 379 (char 
378)


Digging deeper I found the offending JSON string to be this:
'[{"ifindex":165,"ifname":"vx0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1450,"qdisc":"noqueue","operstate":"UNKNOWN","group":"default","txqlen":1000,"link_type":"ether","address":"ce:b7:0a:11:3e:75","broadcast":"ff:ff:ff:ff:ff:ff","promiscuity":0,"allmulti":0,"min_mtu":68,"max_mtu":65535,"linkinfo":{"info_kind":"vxlan","info_data":{"id":1337,"group":"224.0.0.5"fan-map
 
,"local":"10.10.10.42","link":"eth42","port_range":{"low":4000,"high":4200},"port":4567,"ttl":64,"df":"unset","ageing":100,"external":false,"learning":false,"proxy":false,"rsc":true,"l2miss":true,"l3miss":true,"udp_csum":true,"udp_zero_csum6_tx":true,"udp_zero_csum6_rx":true,"remcsum_tx":true,"remcsum_rx":true,"localbypass":true}},"num_tx_queues":1,"num_rx_queues":1,"gso_max_size":65536,"gso_max_segs":65535,"tso_max_size":524280,"tso_max_segs":65535,"gro_max_size":65536,"gso_ipv4_max_size":65536,"gro_ipv4_max_size":65536,"addr_info":[{"family":"inet6","local":"fe80::ccb7:aff:fe11:3e75","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]'


There seems to be an unrelated "fan-map" word in-between.


That Netplan autopkgtest does this to trigger the issue:

"""
network:
  renderer: networkd
  version: 2
  tunnels:
    vx0:
      mode: vxlan
      id: 1337
      link: eth0
      local: 10.10.10.42
      remote: 224.0.0.5 # multicast group
      ttl: 64
      aging: 100
      port: 4567
      port-range: [4000, 4200]
      mac-learning: false
      short-circuit: true
      notifications: [l2-miss, l3-miss]
      checksums: [udp, zero-udp6-tx, zero-udp6-rx, remote-tx, remote-rx] # 
sd-networkd only
  ethernets:
    eth0:
      addresses: [10.10.10.42/24]
"""

$ netplan apply
$ ip -j -d a show dev vx0

If we pipe that previous output to "json_pp" we get:

$ ip -j -d a show dev vx0 | json_pp
, or } expected while parsing object/hash, at character offset 378 (before 
"fan-map ,"local":"10...") at /usr/bin/json_pp line 59.

If we try to parse it in Python (as the Netplan tests do):

>>> input
'[{"ifindex":165,"ifname":"vx0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1450,"qdisc":"noqueue","operstate":"UNKNOWN","group":"default","txqlen":1000,"link_type":"ether","address":"ce:b7:0a:11:3e:75","broadcast":"ff:ff:ff:ff:ff:ff","promiscuity":0,"allmulti":0,"min_mtu":68,"max_mtu":65535,"linkinfo":{"info_kind":"vxlan","info_data":{"id":1337,"group":"224.0.0.5"fan-map
 
,"local":"10.10.10.42","link":"eth42","port_range":{"low":4000,"high":4200},"port":4567,"ttl":64,"df":"unset","ageing":100,"external":false,"learning":false,"proxy":false,"rsc":true,"l2miss":true,"l3miss":true,"udp_csum":true,"udp_zero_csum6_tx":true,"udp_zero_csum6_rx":true,"remcsum_tx":true,"remcsum_rx":true,"localbypass":true}},"num_tx_queues":1,"num_rx_queues":1,"gso_max_size":65536,"gso_max_segs":65535,"tso_max_size":524280,"tso_max_segs":65535,"gro_max_size":65536,"gso_ipv4_max_size":65536,"gro_ipv4_max_size":65536,"addr_info":[{"family":"inet6","local":"fe80::ccb7:aff:fe11:3e75","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]'
>>> import json
>>> json.loads(input)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.12/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
               ^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 379 (char 
378)

** Affects: iproute2 (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: netplan.io (Ubuntu)
     Importance: Undecided
     Assignee: Lukas Märdian (slyon)
         Status: Triaged


** Tags: server-triage-discuss update-excuse

** Also affects: iproute2 (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: netplan.io (Ubuntu)
   Importance: Undecided
       Status: New

** Changed in: netplan.io (Ubuntu)
       Status: New => Triaged

** Changed in: netplan.io (Ubuntu)
     Assignee: (unassigned) => Lukas Märdian (slyon)

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
Matching subscriptions: iproute2
https://bugs.launchpad.net/bugs/2105484

Title:
  Invalid "fan-map" in iproute2 JSON output

Status in iproute2 package in Ubuntu:
  New
Status in linux package in Ubuntu:
  New
Status in netplan.io package in Ubuntu:
  Triaged

Bug description:
  The netplan.io autopkgtests started failing a while ago on Plucky VMs.
  The armhf based containers are unaffected, pointing towards a kernel
  issue.

  Local reproducer: autopkgtest -U -B netplan.io --test-name=tunnels -s
  -- qemu /data/autopkgtest-plucky-amd64.img

  => see the following failure:

  ======================================================================
  ERROR: test_tunnel_vxlan (__main__.TestNetworkd.test_tunnel_vxlan)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/tmp/autopkgtest.oVutZW/tree/tests/integration/tunnels.py", line 281, 
in test_tunnel_vxlan
      json = self.iface_json('vx0')
    File "/tmp/autopkgtest.oVutZW/tree/tests/integration/base.py", line 315, in 
iface_json
      json_dict = json.loads(out)
    File "/usr/lib/python3.13/json/__init__.py", line 346, in loads
      return _default_decoder.decode(s)
             ~~~~~~~~~~~~~~~~~~~~~~~^^^
    File "/usr/lib/python3.13/json/decoder.py", line 345, in decode
      obj, end = self.raw_decode(s, idx=_w(s, 0).end())
                 ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.13/json/decoder.py", line 361, in raw_decode
      obj, end = self.scan_once(s, idx)
                 ~~~~~~~~~~~~~~^^^^^^^^
  json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 379 
(char 378)

  
  Digging deeper I found the offending JSON string to be this:
  
'[{"ifindex":165,"ifname":"vx0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1450,"qdisc":"noqueue","operstate":"UNKNOWN","group":"default","txqlen":1000,"link_type":"ether","address":"ce:b7:0a:11:3e:75","broadcast":"ff:ff:ff:ff:ff:ff","promiscuity":0,"allmulti":0,"min_mtu":68,"max_mtu":65535,"linkinfo":{"info_kind":"vxlan","info_data":{"id":1337,"group":"224.0.0.5"fan-map
 
,"local":"10.10.10.42","link":"eth42","port_range":{"low":4000,"high":4200},"port":4567,"ttl":64,"df":"unset","ageing":100,"external":false,"learning":false,"proxy":false,"rsc":true,"l2miss":true,"l3miss":true,"udp_csum":true,"udp_zero_csum6_tx":true,"udp_zero_csum6_rx":true,"remcsum_tx":true,"remcsum_rx":true,"localbypass":true}},"num_tx_queues":1,"num_rx_queues":1,"gso_max_size":65536,"gso_max_segs":65535,"tso_max_size":524280,"tso_max_segs":65535,"gro_max_size":65536,"gso_ipv4_max_size":65536,"gro_ipv4_max_size":65536,"addr_info":[{"family":"inet6","local":"fe80::ccb7:aff:fe11:3e75","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]'

  
  There seems to be an unrelated "fan-map" word in-between.

  
  That Netplan autopkgtest does this to trigger the issue:

  """
  network:
    renderer: networkd
    version: 2
    tunnels:
      vx0:
        mode: vxlan
        id: 1337
        link: eth0
        local: 10.10.10.42
        remote: 224.0.0.5 # multicast group
        ttl: 64
        aging: 100
        port: 4567
        port-range: [4000, 4200]
        mac-learning: false
        short-circuit: true
        notifications: [l2-miss, l3-miss]
        checksums: [udp, zero-udp6-tx, zero-udp6-rx, remote-tx, remote-rx] # 
sd-networkd only
    ethernets:
      eth0:
        addresses: [10.10.10.42/24]
  """

  $ netplan apply
  $ ip -j -d a show dev vx0

  If we pipe that previous output to "json_pp" we get:

  $ ip -j -d a show dev vx0 | json_pp
  , or } expected while parsing object/hash, at character offset 378 (before 
"fan-map ,"local":"10...") at /usr/bin/json_pp line 59.

  If we try to parse it in Python (as the Netplan tests do):

  >>> input
  
'[{"ifindex":165,"ifname":"vx0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1450,"qdisc":"noqueue","operstate":"UNKNOWN","group":"default","txqlen":1000,"link_type":"ether","address":"ce:b7:0a:11:3e:75","broadcast":"ff:ff:ff:ff:ff:ff","promiscuity":0,"allmulti":0,"min_mtu":68,"max_mtu":65535,"linkinfo":{"info_kind":"vxlan","info_data":{"id":1337,"group":"224.0.0.5"fan-map
 
,"local":"10.10.10.42","link":"eth42","port_range":{"low":4000,"high":4200},"port":4567,"ttl":64,"df":"unset","ageing":100,"external":false,"learning":false,"proxy":false,"rsc":true,"l2miss":true,"l3miss":true,"udp_csum":true,"udp_zero_csum6_tx":true,"udp_zero_csum6_rx":true,"remcsum_tx":true,"remcsum_rx":true,"localbypass":true}},"num_tx_queues":1,"num_rx_queues":1,"gso_max_size":65536,"gso_max_segs":65535,"tso_max_size":524280,"tso_max_segs":65535,"gro_max_size":65536,"gso_ipv4_max_size":65536,"gro_ipv4_max_size":65536,"addr_info":[{"family":"inet6","local":"fe80::ccb7:aff:fe11:3e75","prefixlen":64,"scope":"link","protocol":"kernel_ll","valid_life_time":4294967295,"preferred_life_time":4294967295}]}]'
  >>> import json
  >>> json.loads(input)
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python3.12/json/__init__.py", line 346, in loads
      return _default_decoder.decode(s)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.12/json/decoder.py", line 337, in decode
      obj, end = self.raw_decode(s, idx=_w(s, 0).end())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.12/json/decoder.py", line 353, in raw_decode
      obj, end = self.scan_once(s, idx)
                 ^^^^^^^^^^^^^^^^^^^^^^
  json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 379 
(char 378)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/iproute2/+bug/2105484/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to