.. note::
- For both IPv4 and IPv6, the IP address has to exist at the point the
- route-map is created. Be wary of race conditions if the interface is
- not created at startup. On Debian, FRR might start before ifupdown
- completes. Consider a reboot test.
+ For both IPv4 and IPv6, the IP address has to exist on some interface when
+ the route is getting installed into the system. Otherwise, kernel rejects
+ the route. To solve the problem of disappearing IPv6 addresses when the
+ interface goes down, use ``net.ipv6.conf.all.keep_addr_on_down``
+ :ref:`sysctl option <zebra-sysctl>`.
.. clicmd:: zebra route-map delay-timer (0-600)
Display the user configured IPv6 router-id.
+.. _zebra-sysctl:
+
Expected sysctl settings
========================
struct nb_cb_modify_args *args)
{
struct routemap_hook_context *rhc;
- struct interface *pif = NULL;
const char *source;
- struct vrf *vrf;
struct prefix p;
int rv;
yang_dnode_get_string(args->dnode, NULL));
return NB_ERR_VALIDATION;
}
-
- RB_FOREACH(vrf, vrf_id_head, &vrfs_by_id) {
- pif = if_lookup_exact_address(&p.u.prefix4, AF_INET,
- vrf->vrf_id);
- if (pif != NULL)
- break;
- }
- if (pif == NULL) {
- zlog_warn("%s: is not a local address: %s", __func__,
- yang_dnode_get_string(args->dnode, NULL));
- return NB_ERR_VALIDATION;
- }
return NB_OK;
case NB_EV_PREPARE:
case NB_EV_ABORT:
struct nb_cb_modify_args *args)
{
struct routemap_hook_context *rhc;
- struct interface *pif = NULL;
const char *source;
- struct vrf *vrf;
struct prefix p;
int rv;
yang_dnode_get_string(args->dnode, NULL));
return NB_ERR_VALIDATION;
}
-
- RB_FOREACH(vrf, vrf_id_head, &vrfs_by_id) {
- pif = if_lookup_exact_address(&p.u.prefix6, AF_INET6,
- vrf->vrf_id);
- if (pif != NULL)
- break;
- }
- if (pif == NULL) {
- zlog_warn("%s: is not a local address: %s", __func__,
- yang_dnode_get_string(args->dnode, NULL));
- return NB_ERR_VALIDATION;
- }
return NB_OK;
case NB_EV_PREPARE:
case NB_EV_ABORT: