-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pimd: Fix PIM VRF support (send register/register stop in VRF) #18216
Conversation
In 9461953 and 8ebcc02, transmission of PIM register and register stop messages was changed to use a separate socket. However, that socket is not bound to a possible VRF, so the messages were sent in the default VRF instead. Call vrf_bind() once after socket creation and when the VRF is ready to ensure transmission in the correct VRF. vrf_bind() handles the non-VRF case (i.e. VRF_DEFAULT) automatically, so it may be called unconditionally. Signed-off-by: Martin Buck <[email protected]>
CI failure looks unrelated to me |
I just reran the failed test. |
@gromit1811 Do you mind adding or expanding an existing topotest to cover this case? That way we know the fix actually works and it won't break again. |
@Mergifyio backport dev/10.3 stable/10.2 stable/10.1 |
✅ Backports have been created
|
I'll have a look at the topotest, but it will take a couple of days |
I will merge this one, and if you get around writing a test, that would be great and we can merge that independent of this PR. |
pimd: Fix PIM VRF support (send register/register stop in VRF) (backport #18216)
pimd: Fix PIM VRF support (send register/register stop in VRF) (backport #18216)
pimd: Fix PIM VRF support (send register/register stop in VRF) (backport #18216)
In 9461953 and
8ebcc02, transmission of PIM register and register stop messages was changed to use a separate socket. However, that socket is not bound to a possible VRF, so the messages were sent in the default VRF instead. Call vrf_bind() once after socket creation and when the VRF is ready to ensure transmission in the correct VRF. vrf_bind() handles the non-VRF case (i.e. VRF_DEFAULT) automatically, so it may be called unconditionally.