net_fill_ip_host($$, SYM_VAL($1).ip);
}
else if (($1->class == (SYM_CONSTANT | T_NET)) && net_type_match(SYM_VAL($1).net, NB_IP | NB_VPN))
- $$ = SYM_VAL($1).net;
+ $$ = (net_addr *) SYM_VAL($1).net; /* Avoid const warning */
else
cf_error("IP address or network expected");
}
CF_KEYWORDS(RX, BUFFER, LARGE, NORMAL, STUBNET, HIDDEN, SUMMARY, TAG, EXTERNAL)
CF_KEYWORDS(WAIT, DELAY, LSADB, ECMP, LIMIT, WEIGHT, NSSA, TRANSLATOR, STABILITY)
CF_KEYWORDS(GLOBAL, LSID, ROUTER, SELF, INSTANCE, REAL, NETMASK, TX, PRIORITY, LENGTH)
-CF_KEYWORDS(SECONDARY, MERGE, LSA, SUPPRESSION, OSPF2, OSPF3)
+CF_KEYWORDS(SECONDARY, MERGE, LSA, SUPPRESSION)
%type <ld> lsadb_args
%type <i> ospf_variant nbma_eligible
{
rta *a = e->attrs;
+ /* XXXX device routes are broken */
return
- ((a->dest == RTD_UNICAST && !a->nh.next) /* No multipath support */
+ ((a->dest == RTD_UNICAST && ipa_nonzero(a->nh.gw) && !a->nh.next) /* No multipath support */
#ifdef RTF_REJECT
|| a->dest == RTD_UNREACHABLE
#endif
af = AF_INET6;
break;
default:
- log(L_ERR "KRT: Not sending VPN route %N to kernel", net->n.addr);
+ log(L_ERR "KRT: Not sending route %N to kernel", net->n.addr);
return -1;
}
sockaddr_fill(&gate, ipa_is_ip4(i->addr->ip) ? AF_INET : AF_INET6, i->addr->ip, NULL, 0);
msg.rtm.rtm_addrs |= RTA_GATEWAY;
+ break;
}
default:
{
case NET_IP4: p->af = AF_INET; break;
case NET_IP6: p->af = AF_INET6; break;
+#ifdef AF_MPLS
case NET_MPLS: p->af = AF_MPLS; break;
+#endif
default: log(L_ERR "KRT: Tried to start with strange net type: %d", p->p.net_type); return PS_START; break;
}