Incorrect OpenBGPd package scripts prevent use of both IPv4 and IPv6
Symtoms of this bug can be seen in the post below:
To correct this you need to add a new "Listen on IP" field in the "settings" tab for IPv6, so package scripts can set the correct "Listen on IP" address for IPv6. Actually the script incorrectly copies the IPv4 "Listen on IP" value to IPv6, breaking the start of BGP daemon.
#2 Updated by Luzemario Dantas about 4 years ago
Steps to reproduce:
1. Install the latest OpenBGPd package;
2. Enter the needed settings, adding both IPv4 and IPv6 prefixes;
3. Fill the other tabs with neighbor info and other settings as usual;
4. Save all settings;
5. Watch on "Raw config" the "listen-on-ip" for IPv6 settings. There is a IPv4 address there;
6. Click on "status" tab. The PID for BGPd is missing, indicating BGPd did not start;
7. On command shell, try "bgpd -d". An error message is thrown and the service does not start.
#5 Updated by Jim Pingle almost 4 years ago
- Status changed from New to Needs Patch
- Assignee changed from Jim Pingle to Luzemario Dantas
Unless there is a compelling need to set it to listen on two specific addresses manually, leave "Listen on IP" blank and it should listen on both IPv4 and IPv6.
If someone wants to test and submit a patch to do separate IPv4 and IPv6 "Listen on IP" address boxes, it wouldn't be tough to do, but it doesn't appear to be strictly necessary at this point. Using the raw config tab can easily work around it as well.
#6 Updated by Luzemario Dantas almost 4 years ago
Leaving "Listen on IP" blank makes the default IPv4 address "0.0.0.0" to be put on both IPv4 and IPv6 "local-address" directives of raw config when using groups. This still prevents bgpd daemon from starting because "0.0.0.0" is a IPv4 dot-formatted address (and the daemon expects a colon formatted address when IPv6 family is used on that group).
A workaround for this is setting the "Local address X" extra parameter to a valid IPv6 colon-formatted address for each neighbor, so the default "local-address" for IPv6 will get this address instead of an IPv4 dot-formatted address copied from "listen on" clause.
We applied this here because we have several WAN links with both IPv4 and IPv6 BGP sessions established, so it was necessary to have specific "local-address" directives defined.