From e7ef86a58cc5393ba764606b0ee6d760e6164f0c Mon Sep 17 00:00:00 2001 From: Ondrej Filip Date: Fri, 4 Jun 2004 18:51:29 +0000 Subject: OSPF is ready for changing MTU. --- proto/ospf/iface.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'proto/ospf/iface.c') diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index 30eb40b..d08fa8b 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -430,8 +430,23 @@ ospf_if_notify(struct proto *p, unsigned flags, struct iface *iface) { if((ifa=find_iface((struct proto_ospf *)p, iface))!=NULL) { + struct ospf_packet *op; + struct ospf_neighbor *n; OSPF_TRACE(D_EVENTS, "Changing MTU on interface %s.", iface->name); - /* FIXME: change MTU */ + sk_reallocate(ifa->hello_sk); + sk_reallocate(ifa->dr_sk); + sk_reallocate(ifa->ip_sk); + + WALK_LIST(n,ifa->neigh_list) + { + op = (struct ospf_packet *)n->ldbdes; + n->ldbdes = mb_allocz(n->pool, iface->mtu); + + if(ntohs(op->length) <= iface->mtu) /* If the packet in old buffer is bigger, let it filled by zeros */ + memcpy(n->ldbdes, op, iface->mtu); /* If the packet is old is same or smaller, copy it */ + + rfree(op); + } } } } -- cgit v1.2.3