summaryrefslogtreecommitdiff
path: root/proto/ospf/topology.c
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2014-02-06 17:46:01 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2014-02-06 17:46:01 +0100
commit48e5f32db676645640f84ab3d630cce975aa6b20 (patch)
treeb940fc8156b3e0c18aab6c339a066bdb7a9ec1e0 /proto/ospf/topology.c
parentf48fa14214301382b2e6b134788a7506b61b664f (diff)
Many changes in I/O and OSPF sockets and packet handling.
I/O: - BSD: specify src addr on IP sockets by IP_HDRINCL - BSD: specify src addr on UDP sockets by IP_SENDSRCADDR - Linux: specify src addr on IP/UDP sockets by IP_PKTINFO - IPv6: specify src addr on IP/UDP sockets by IPV6_PKTINFO - Alternative SKF_BIND flag for binding to IP address - Allows IP/UDP sockets without tx_hook, on these sockets a packet is discarded when TX queue is full - Use consistently SOL_ for socket layer values. OSPF: - Packet src addr is always explicitly set - Support for secondary addresses in BSD - Dynamic RX/TX buffers - Fixes some minor buffer overruns - Interface option 'tx length' - Names for vlink pseudoifaces (vlinkX) - Vlinks use separate socket for TX - Vlinks do not use fixed associated iface - Fixes TTL for direct unicast packets - Fixes DONTROUTE for OSPF sockets - Use ifa->ifname instead of ifa->iface->name
Diffstat (limited to 'proto/ospf/topology.c')
-rw-r--r--proto/ospf/topology.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c
index f25db9a7..4af5afa5 100644
--- a/proto/ospf/topology.c
+++ b/proto/ospf/topology.c
@@ -306,7 +306,7 @@ originate_rt_lsa_body(struct ospf_area *oa, u16 *length)
break;
default:
- log("Unknown interface type %s", ifa->iface->name);
+ log("Unknown interface type %s", ifa->ifname);
break;
}
@@ -447,7 +447,7 @@ originate_rt_lsa_body(struct ospf_area *oa, u16 *length)
break;
default:
- log("Unknown interface type %s", ifa->iface->name);
+ log("Unknown interface type %s", ifa->ifname);
break;
}
@@ -596,8 +596,7 @@ originate_net_lsa(struct ospf_iface *ifa)
void *body;
- OSPF_TRACE(D_EVENTS, "Originating network-LSA for iface %s",
- ifa->iface->name);
+ OSPF_TRACE(D_EVENTS, "Originating network-LSA for iface %s", ifa->ifname);
lsa.age = 0;
lsa.type = LSA_T_NET;
@@ -628,8 +627,7 @@ flush_net_lsa(struct ospf_iface *ifa)
if (ifa->net_lsa == NULL)
return;
- OSPF_TRACE(D_EVENTS, "Flushing network-LSA for iface %s",
- ifa->iface->name);
+ OSPF_TRACE(D_EVENTS, "Flushing network-LSA for iface %s", ifa->ifname);
ifa->net_lsa->lsa.sn += 1;
ifa->net_lsa->lsa.age = LSA_MAXAGE;
lsasum_calculate(&ifa->net_lsa->lsa, ifa->net_lsa->lsa_body);
@@ -1212,8 +1210,11 @@ originate_link_lsa(struct ospf_iface *ifa)
struct proto *p = &po->proto;
void *body;
- /* FIXME check for vlink and skip that? */
- OSPF_TRACE(D_EVENTS, "Originating link-LSA for iface %s", ifa->iface->name);
+ /* Vlinks do not have link-LSAs */
+ if (ifa->type == OSPF_IT_VLINK)
+ return;
+
+ OSPF_TRACE(D_EVENTS, "Originating link-LSA for iface %s", ifa->ifname);
lsa.age = 0;
lsa.type = LSA_T_LINK;
@@ -1498,8 +1499,7 @@ originate_prefix_net_lsa(struct ospf_iface *ifa)
struct ospf_lsa_header lsa;
void *body;
- OSPF_TRACE(D_EVENTS, "Originating network prefix-LSA for iface %s",
- ifa->iface->name);
+ OSPF_TRACE(D_EVENTS, "Originating network prefix-LSA for iface %s", ifa->ifname);
lsa.age = 0;
lsa.type = LSA_T_PREFIX;
@@ -1525,8 +1525,7 @@ flush_prefix_net_lsa(struct ospf_iface *ifa)
if (en == NULL)
return;
- OSPF_TRACE(D_EVENTS, "Flushing network prefix-LSA for iface %s",
- ifa->iface->name);
+ OSPF_TRACE(D_EVENTS, "Flushing network prefix-LSA for iface %s", ifa->ifname);
en->lsa.sn += 1;
en->lsa.age = LSA_MAXAGE;