opportunistic service registration fails
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
HIPL |
Fix Committed
|
Undecided
|
Jookos |
Bug Description
Opportunistic registration to e.g. RVS fails. From Joakim from the mailing list:
A short overview, just tell me if you need more info:
I have 1 RVS server and 2 clients. On the server I use the default hipl config, doing only a 'hipconf daemon add service rvs'.
Client 1 tries to register to the RVS, and client 2 ping client 1. No firewalls on the hosts (iptables accepts all). One of the client is behind a nat, the other (as well as the RVS) has a public ip. Doesn't matter which one registers, and which tries to ping, both cases produce the same errors.
When client 1 register, the RVS server produces a bunch of these:
error(libcore/
error(libcore/
error(libhipl/
But after a while, or more often after trying it again (doing another 'hipconf daemon add server rvs <ip> <time>'), it apparently gets through, logging on the RVS:
error(libcore/
info(libhipl/
error(modules/
After that there's a lot of:
info(libhipl/
info(libhipl/
on the RVS server, as the client apparently has problems receiving the packets the server is sending, printing:
info(libhipl/
info(libhipl/
error(libhipl/
There seems to be some sort of retransmission-
Then, on the second client, we try to ping the first one through the RVS:
'hipconf daemon add map <client 1 hit> <rvs server ip>':
error(libcore/
error(libcore/
error(libcore/
..which doesn't look good. But ignoring that, we try 'ping6 <client 1 hit>'.
The RVS server does, apparently, receive something, because the log starts getting full of:
error(libhipl/
but nothing else, and this doesn't change. However, using another host as RVS may get you:
info(libhipl/
info(libhipl/
info(libhipl/
error(libcore/
error(libhipl/
.. which seems ok. But on client 1 (the one registered to the rvs), there's just a lot of:
info(libhipl/
info(libhipl/
And nothing else happens. Does this sould familiar to anyone? Does anyone else have a problem with this or could it be something in the environment I'm using (a mix of debian stable/
Did a quick trace and the problem apparently is that during opportunistic bexes, when receiving the R1 a new hadb entry is created with the proper HITs, and the old one removed. While creating this new entry, the hip_version is never set. This results in a faulty I2.
Attached is a simple patch which wfm.