[hipl-users] Re: [HIP UPDATE] - select() error: Interrupted system call

  • From: Philippe Foubert <Philippe.Foubert@xxxxxxxxxx>
  • To: hipl-users@xxxxxxxxxxxxx
  • Date: Mon, 08 Feb 2010 15:53:28 +0100

Miika, Hi,

I just run the same test and here is the hipd.log file -> ftp://ftp.eurecom.fr/incoming/hipd.log
I now, try to debug using the breakpoints you gave me.

Thanks Miika,
Philippe

Miika Komu wrote:
On 04/02/10 11:57, Philippe Foubert wrote:

Hi,

the screenshots end when it starts to get interesting. Please repeat and collect the logs into a log file as follows:

hipd -k 2>/tmp/hipd.log

And then post the log file to your FTP server.

Alternatively, you can try to see what the code does by yourself:

% gdb hipd
breakpoint hip_send_locators_to_all_peers
breakpoint hip_send_locators_to_one_peer
breakpoint hip_create_update_msg
breakpoint hip_send_update_pkt
breakpoint hip_send_pkt
breakpoint hip_send_raw_from_one_src
run -k

I am interested if hipd ever gets to the last function and what happens there. Particilarly, does it ever it ever get to line 1243 in output.c which calls sendto()? This should blast away the packet to the network.

You can type "continue" in gdb the proceed to next break point and "next" to single step a line. "Step" follows inside to a function call. There are also GUIs for gdb (xxgdb and ddd).

Official error reporting instructions are here:

http://hipl.hiit.fi/hipl/manual/ch03.html#quick

Hi Miika,

I did the same tests than before but this time with the your new version
1.0.4.112, on both computers, and I still have the same problem.

-> I start HIP daemons on the my two machines and via the "conntest"
connection I'm sure that the connection is good

-> Then, here are my screenshots when I just add another IPv6 address to
my interface :
ftp://ftp.eurecom.fr/incoming/Adding1Addr.With.version.1.0.4-112.screen1.png

ftp://ftp.eurecom.fr/incoming/Adding1Addr.With.version.1.0.4-112.screen2.png


-> And now I remove the main IPv6 address of the interface to let only
the one I just added :
ftp://ftp.eurecom.fr/incoming/Removing1Addr.With.version.1.0.4-112.screen1.png

ftp://ftp.eurecom.fr/incoming/Removing1Addr.With.version.1.0.4-112.screen2.png


And still no HIP UPDATE packet.
My two machines are directly connected to each other with an ethernet
cable and thus have no access to any other machine.
Once I started the HIPD on my two machines, I give this command "hipconf
opendht off" on both, plus the "hipconf add map HIT IPv6" to one of my
machine. Perhaps there is another command that I should give ?

Thanks a lot,
Philippe


Miika Komu wrote:
On 03/02/10 17:26, Philippe Foubert wrote:

Hi,

it appears that the DNS updater interrupts UPDATE handling. Perhaps
Oleg has something to comment about it?

I implemented a workaround for this and pushed a new version of the
binaries to the repositories (1.0.4.112). Please try it.

Hi,

Thanks for your fast answer. I just turned on the "debug all" feature
and I see a bit
more clear now.

I would say that everything looks ok except that the HIP UPDATE is never
sent by my
Mobile Node. I let everything running for 20 minutes and I never caught
the HIP UPDATE
packet.

Here is screenshots when I just start the HIP daemons on the two nodes
and when I try the
HIP connection via the tool "conntest" :
ftp://ftp.eurecom.fr/incoming/1-connection1.png
ftp://ftp.eurecom.fr/incoming/1-connection2.png
Everything is perfect.

Now I add one Ipv6 address (I add 2001:3::1/64 on eth0 where there was
already
2001:6::1/64) :
ftp://ftp.eurecom.fr/incoming/2-adding_a_new_ipv6addr.png
ftp://ftp.eurecom.fr/incoming/2-adding_a_new_ipv6addr2.png (screenshot
taken 1 minute
after the IPv6 was added)

We can clearly see that the HIPD is trying to create the UPDATE packet
but the tcpdump
never caught it, and the "SENDMSG Interrupted system call" appears...

Do you have any other ideas why this UPDATE message is never sent ?
Thanks,
Philippe


Quoting Miika Komu <miika.komu@xxxxxxx>:

[Hide Quoted Text]
<https://webmail.eurecom.fr/imp/message.php?index=1468#>
On 02/02/2010 08:08 PM, Philippe Foubert wrote:

Hi,

we have introduced some articifial delay to the sending of UPDATE. By
default, the mobility events are triggered when there has been no other
changes in addresses in 6 seconds. Persistent heartbeat failure for 40
seconds will also cause this 6 second timer to tick. If you have "debug
all" in your /etc/hipd/hipd_config, you should see the following
messages when hipd starts the timer:

debug(hipd/maintenance.c:402@periodic_maintenance): Delay mobility
triggering (count 1)
debug(hipd/maintenance.c:402@periodic_maintenance): Delay mobility
triggering (count 0)
debug(hipd/maintenance.c:397@periodic_maintenance): Triggering UPDATE

I am usually running tcpdump with the following filters:

tcpdump -n -i any port 10500 or esp or proto 139

Please notice that hipd uses UDP-encapsulation by default.

http://infrahip.hiit.fi/hipl/contrib/
Hi all,

I would like to catch a HIP UPDATE message in my wireshark by simulating
manually a softhandover, but I never get this packet.
*_
My configuration :

_*I have two nodes (let's call them A and B), directly connected by an
ethernet cable. (they are running the last ubuntu with 1.0.4-111 HIP
packages).

I give manually to node A :

* ip -6 addr add 2001:1::1/64 dev eth0
* ip -6 route add ::/0 dev eth0

I give manually to node B :

* ip -6 addr add 2001:2::1/64 dev eth0
* ip -6 route add ::/0 dev eth0

I ping6 each other, and it works.

Then I start the HIPD (hipfw and hipdnsproxy are NOT running)
On both machines I do :

* hipconf opendht off
* hipconf add map HIToftheotherone IPv6linked

then if I try the "conntest" or Ping6 with HIT, it is working perfectly
and I do have the HIP I1/2 R1/2 packets in my wireshark.

I let the "Ping6 HIT" running between them and then I add another Ipv6
address on one of the machine (I add 2001:5::1/64 on node A)
The ping6 is still running and I start to have these lines in my HIPD
(lines in bold):

Received I1 from:info(hipd/input.c:2937@hip_handle_i1): Source HIT::
2001:0011:0bcf:2e1d:a270:9e00:3b3e:ba96
info(hipd/input.c:2938@hip_handle_i1): Source IP ::
2001:0001:0000:0000:0000:0000:0000:0001
info(hipd/input.c:1878@hip_handle_i2):
Received I2 from:info(hipd/input.c:1879@hip_handle_i2): Source HIT::
2001:0011:0bcf:2e1d:a270:9e00:3b3e:ba96
info(hipd/input.c:1880@hip_handle_i2): Source IP ::
2001:0001:0000:0000:0000:0000:0000:0001
error(lib/tool/xfrmapi.c:482@hip_delete_sa): Warning: out sa count
negative
error(lib/tool/xfrmapi.c:492@hip_delete_sa): Warning: in sa count
negative
error(hipd/output.c:1495@hip_send_icmp): sendmsgSuccess
error(hipd/output.c:1501@hip_send_icmp): SENDMSG Success
info(hipd/input.c:2479@hip_handle_i2): Reached ESTABLISHED state
error(hipd/output.c:1495@hip_send_icmp): sendmsgSuccess
error(hipd/output.c:1501@hip_send_icmp): SENDMSG Success
error(hipd/output.c:1495@hip_send_icmp): sendmsgSuccess
error(hipd/output.c:1501@hip_send_icmp): SENDMSG Success
*error(hipd/hipd.c:639@hipd_main): select() error: Interrupted
system call. *
*error(hipd/hipd.c:639@hipd_main): select() error: Interrupted
system call. *


At this point then, node A has 2001:1::1/64 (the first address it used
to have) and 2001:5::1/64
I now remove 2001:1::1/64 in order to force the node A to send a HIP
UPDATE message but it does not happen. Actually the ping6 stops.
At this moment, if I do a "hipconf get ha all"
for the LOCAL IP, I still have 2001:1::1/64 .... :-s
Which means that HIPD is never actualised.

Theoretically, I should have a HIP UPDATE message there no ?
Do I forget to run a specific command on the HIPD ?

Thanks a lot in advance for your help,
Philippe














Other related posts: