misleading documentation for the "direct" protocol

Lexi Winter lexi at le-fay.org
Tue Jun 2 09:47:15 CEST 2026


hi Maria,

Maria Matejka via Bird-users wrote in <ah1I94EZ8sMDSlCm at struhadlo.private.jmq.cz>:
>> without direct, and with a basic OSPF configuration with no peers, BIRD
>> will flag the OSPF interface routes with '!':
>>[...]

> This looks like a kernel protocol bug. If you are, by any chance, able
> to describe to us the interface configuration and BIRD configuration,
> we'd be very pleased so that we don't have to try _something_. You may
> send this off-list of course.
 
i've attached the bird.conf.  although OSPF is configured, currently
there are no peers, so both OSPF instances are "Alone".  the config
is deliberately as simple as possible, because i wanted to find out
where these netlink errors are coming from.

the host's interface configuration is:

# ifconfig
genet0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
	options=68000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	ether d8:3a:dd:53:f7:59
	inet 81.2.96.163/28 broadcast 81.2.96.175
	inet6 fe80::da3a:ddff:fe53:f759%genet0/64 scopeid 0x1
	inet6 2001:8b0:aab5:c401::1:3/64
	media: Ethernet autoselect (1000baseT <full-duplex>)
	status: active
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
	options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
	inet 127.0.0.1/8
	inet6 ::1/128
	inet6 fe80::1%lo0/64 scopeid 0x2
	groups: lo
	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

also, the routing table, in case that's helpful:

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags         Netif Expire
default            81.2.96.161        UGS          genet0
81.2.96.160/28     link#1             U            genet0
81.2.96.163        link#2             UHS             lo0
127.0.0.1          link#2             UH              lo0

Internet6:
Destination                       Gateway                       Flags         Netif Expire
::/96                             link#2                        URS             lo0
default                           2001:8b0:aab5:c401::1         UGS          genet0
::1                               link#2                        UHS             lo0
::ffff:0.0.0.0/96                 link#2                        URS             lo0
2001:8b0:aab5:c401::/64           link#1                        U            genet0
2001:8b0:aab5:c401::1:3           link#2                        UHS             lo0
fe80::%lo0/10                     link#2                        URS             lo0
fe80::%genet0/64                  link#1                        U            genet0
fe80::da3a:ddff:fe53:f759%lo0     link#2                        UHS             lo0
fe80::%lo0/64                     link#2                        U               lo0
fe80::1%lo0                       link#2                        UHS             lo0
ff02::/16                         link#2                        URS             lo0

> We'll try this on FreeBSD 15.0 and see what happens. Thank you for
> reporting this!

if you're able to reproduce the issue and it seems to be a FreeBSD
kernel bug, please feel free to cc me (ivy at FreeBSD.org) on a PR or
Phab review.
-------------- next part --------------
###########
# Preamble
###########

log syslog all;
timeformat protocol iso long;

router id 198.18.2.4;

##########
# Filters
##########

filter all_dynamic {
	if (source ~ [ RTS_OSPF, RTS_OSPF_EXT1, RTS_OSPF_EXT2, RTS_STATIC ])
	then accept;

	reject;
};

##################
# Direct protocol
##################

protocol direct {
	ipv4;
	ipv6;
};

##################
# Device protocol
##################

protocol device {}

##################
# Kernel protocol
##################

protocol kernel kernel6 {
	kernel table 0;
	learn;

	ipv6 {
		table master6;
		import none;
		export filter all_dynamic;
	};
}

protocol kernel kernel4 {
	kernel table 0;
	learn;

	ipv4 {
		table master4;
		import none;
		export filter all_dynamic;
	};
}

##################
# Static protocol
##################

protocol static static6 {
	ipv6 {
		table master6;
		import all;
	};
}

protocol static static4 {
	ipv4 {
		table master4;
		import all;
	};
}

################
# OSPF protocol
################

protocol ospf v2 core4 {
	ipv4 {
		export none;
		import all;
	};

	area 0 {
		interface "lo1" {
			stub yes;
		};

		interface "genet0" {
			type ptp;
			authentication cryptographic;
			password "..." {
				algorithm hmac sha256;
			};
		};
	};
}

protocol ospf v3 core6 {
	ipv6 {
		export none;
		import all;
	};

	area 0 {
		interface "lo1" {
			stub yes;
		};

		interface "genet0" {
			type ptp;
			authentication cryptographic;
			password "..." {
				algorithm hmac sha256;
			};
		};
	};
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20260602/4f923729/attachment.sig>


More information about the Bird-users mailing list