|
From: | Ivan Warren |
Subject: | Re: [lwip-users] Changed IP address during runtime but TCP PCB stuck time wait state |
Date: | Mon, 17 Dec 2018 11:00:13 +0100 |
User-agent: | Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.3 |
Le 12/17/2018 à 4:39 AM, uaz a écrit :
Hi All, I am doing a webserver that allows users to change device ip address during runtime (no power reset required). I've tried 2 ways of doing so: 1. netif_set_addr() 2. netif_remove() and then netif_add() a new interface with the new ip address In both methods, I will re-init my http server: 1. netconn_close() 2. netconn_delete() 3. Create a new netconn: netconn_new() 4. Bind to http port: netconn_bind() Unfortunately, netconn_bind() to port 80 will fail because apparently the previous pcb bound to port 80 is still there, in time wait state (lwip will not allow multiple sockets listening to the same port). How do I make sure the previous pcb is completely deleted or freed? Thanks
Apparently you need to do something like : #define SO_REUSE to 1 in your lwipopt.hIn your application do a ip_set_option([yournetconn]->pcb.ip_pcb,SOF_REUSEADDR) to your new netconn struct before doing the netconn_bind()
This allows binding to a addr/port that is already in use by a PCB in TIME WAIT state.
That's what I could find looking at the source (that's not really documented though)
--Ivan
smime.p7s
Description: Signature cryptographique S/MIME
[Prev in Thread] | Current Thread | [Next in Thread] |