Hello,

I believe I stumbled upon a bug in BIRD 2.x while doing something that can only be summed up as "testing things on someone else's network with limited access provided to me".

When peering over IPv4 yet exporting a full table, I am noticing that all exports, withdraw or update, are exported as withdrawals.

Export side:

    Routes:         0 imported, 85839 exported, 0 preferred
    Route change stats:     received   rejected   filtered    ignored   accepted
      Import updates:              0          0          0          0          0
      Import withdraws:            0          0        ---          0          0
      Export updates:          85840          0          0        ---      85840
      Export withdraws:            0        ---        ---        ---          0

Import side:

    Routes:         0 imported, 0 exported, 0 preferred
    Route change stats:     received   rejected   filtered    ignored   accepted

      Import updates:              0          0          0          0          0
      Import withdraws:        85823          0        ---      85823          0
      Export updates:              0          0          0        ---          0
      Export withdraws:            0        ---        ---        ---          0

I've also tested with an instance where there were both updates and withdrawals exported, and as a result a sum of both were displayed as imported withdrawals.

The configurations I've tested with are quite simple:

Full import config (seems to import "correctly", but as exports seem to be faulty it all gets recorded as withdrawals):

> log syslog all;
> router id 192.168.4.22;
> protocol device {
>         scan time 5;
> }
>
> protocol bgp bird1 {
>         local 192.168.4.22 as 65529;
>         neighbor 192.168.4.1 as 65530;
>         multihop;
>
>         ipv6 {
>                 import all;
>                 export none;
>         };
> }

Trimmed export config that doesn't export correctly:

> protocol bgp bird2 {
>     local 192.168.4.1 as 65530;
>     neighbor 192.168.4.22 as 65529;
>     multihop;
>
>     ipv6 {
>         import none;
>         export all;
>     };
> }

Things I've so far:

- Doing BGP4 over IPv4 (renaming "ipv6" blocks to "ipv4" in configs). This had no issues, exports and imports were correct.
- Doing BGP4 over IPv6 (doing same change as last point, plus changing IPv4 addresses to IPv6 ones in configs). This had no issues, exports and imports were correct.
- Switching from IPv4 to IPv6 (changing IPv4 addresses to IPv6 ones in configs). This resulted in proper imports, hinting that problem only happens on BGP6 over IPv4.
- Exporting to a non-bird2 BGP daemon. Specifically, I exported to a mikrotik router running ROS v6.46.6. It also classified these as withdrawals ("Withdrawn Received        85 979", with empty "Prefix Count" and "Updates Received").

Thanks and I hope I'm not just doing something wrong and wasting your time as a result,
Ave