stream_putl(msg, ZEBRA_INTERFACE_BFD_DEST_UPDATE);
/* NOTE: Interface is a shortcut to avoid comparing source address. */
- if (bs->ifp != NULL)
+ if (!CHECK_FLAG(bs->flags, BFD_SESS_FLAG_MH) && bs->ifp != NULL)
stream_putl(msg, bs->ifp->ifindex);
else
stream_putl(msg, IFINDEX_INTERNAL);
stream_putc(s, args->ttl);
/* Send interface name if any. */
- stream_putc(s, args->ifnamelen);
- if (args->ifnamelen)
- stream_put(s, args->ifname, args->ifnamelen);
+ if (args->mhop) {
+ /* Don't send interface. */
+ stream_putc(s, 0);
+ if (bsglobal.debugging && args->ifnamelen)
+ zlog_debug("%s: multi hop is configured, not sending interface",
+ __func__);
+ } else {
+ stream_putc(s, args->ifnamelen);
+ if (args->ifnamelen)
+ stream_put(s, args->ifname, args->ifnamelen);
+ }
/* Send the C bit indicator. */
stream_putc(s, args->cbit);