[support] Dynamic MNP's for MR?
Arnaud Ebalard
arno at natisbad.org
Mon Sep 28 19:54:16 JST 2009
Hi Mattias,
Sorry for the long delay. I was busy.
Mattias Blomqvist <mattias.blomqvist at gmail.com> writes:
> On Tue, Sep 1, 2009 at 9:00 AM, Arnaud Ebalard <arno at natisbad.org> wrote:
>> Mattias Blomqvist <mattias.blomqvist at gmail.com> writes:
>>
>>> I have a need for dynamically changing the Mobile Network Prefixes on a MR.
>>> The only way I've found to do this at present is to change the
>>> configuration file and restarting mip6d. This results in all tunnels
>>> being down for the time it takes to restart mip6d. It works but isn't
>>> a very good solution.
>>
>> Another way would be to extend the command line interface code in order
>> to provide the feature, i.e. have something like the following on the MR:
>>
>> $ telnet localhost 7777
>> mip6d> mnp get
>> mnpA mnpB
>> mip6d> mnp set mnpB mnpC mnpD
>>
>> Which would trigger the emission of a BU to the HA to update MNPs.
>
> I took this route and it was quite easy to get it to work for adding
> MNPs to existing HoA's. This works and the new MNP is reachable from a
> CN.
> What I do is basically adding (or deleting) the MNP to the MNP list
> for an existing HoA record and then trigger a movement by a call to
> mn_movement_event(). This results in a new BU which the HA accepts.
> So far so good.
> What I've discovered is that although the network of the newly added
> MNP is reachable from a CN and the other way around, the network of
> the newly added MNP is not reachable (pingable) from the MR itself.
> This seems to be due to missing routes in at least the RT6_TABLE_MIP6
> (252), maybe also in the main table. I've tried adding a call to
> nemo_mr_tnl_routes_add() after adding the new MNP but before
> triggering the BU. This does not seem to help.
>
> What I'm looking for is some pointers in how to get the routes in
> place using the already available infrastructure.
In mn_init(), the following:
list_for_each(l, &conf.home_addrs) {
struct home_addr_info *hai;
hai = list_entry(l, struct home_addr_info, list);
if (conf_home_addr_info(hai) < 0)
goto err_hoa;
}
installs the rules on the MR, via calls to nemo_mr_rules_add. You could
probably create a small helper (nemo_mr_rule_add()/nemo_mr_rule_del()
to handle addition/removal of one rule) and then calling it when
adding/removing a MNP dynamically
Hope that works ;-)
Cheers,
a+
More information about the Support
mailing list