kernel-netlink: Ensure address changes are not missed in roam events
authorTobias Brunner <tobias@strongswan.org>
Mon, 12 Aug 2013 09:23:34 +0000 (11:23 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 12 Aug 2013 10:02:55 +0000 (12:02 +0200)
commit77d4a0281afc3e84a58589e2b10e81d2a39ebcff
tree09e5d1a88194eb4b76abdbca01bd8e8a3d65258d
parenta24515c515de7c51159c07be0e9b873eaa8ec8d5
kernel-netlink: Ensure address changes are not missed in roam events

If multiple roam events are triggered within ROAM_DELAY, only one job is
created.  The old code set the address flag to the value of the last
triggering call.  So if a route change followed an address change within
ROAM_DELAY the address change was missed by the upper layers, e.g. causing
it not to update the list of addresses via MOBIKE.

The new code now keeps the state of the address flag until the job is
actually executed, which still has some issues.  For instance, if an
address disappears and reappears within ROAM_RELAY, the flag would not
have to be set to TRUE.  So address updates might occasionally get
triggered where none would actually be required.

Fixes #374.
src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c