mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	OSPF is ready for changing MTU.
This commit is contained in:
		| @@ -119,6 +119,12 @@ ospf_dbdes_send(struct ospf_neighbor *n) | ||||
|   case NEIGHBOR_FULL: | ||||
|     length = ntohs(((struct ospf_packet *)n)->length); | ||||
|  | ||||
|     if(!length) | ||||
|     { | ||||
|       OSPF_TRACE(D_PACKETS, "No packet in my buffer for repeating"); | ||||
|       ospf_neigh_sm(n, INM_KILLNBR); | ||||
|     } | ||||
|  | ||||
|     memcpy(ifa->ip_sk->tbuf, n->ldbdes, length); | ||||
|       /* Copy last sent packet again */ | ||||
|  | ||||
|   | ||||
| @@ -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); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -38,7 +38,7 @@ ospf_neighbor_new(struct ospf_iface *ifa) | ||||
|   n->ifa = ifa; | ||||
|   add_tail(&ifa->neigh_list, NODE n); | ||||
|   n->adj = 0; | ||||
|   n->ldbdes=mb_alloc(pool, ifa->iface->mtu); | ||||
|   n->ldbdes=mb_allocz(pool, ifa->iface->mtu); | ||||
|   n->state=NEIGHBOR_DOWN; | ||||
|  | ||||
|   n->inactim = tm_new(pool); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user