Re: Implementing IPv6 in modem manager



On Sat, 2011-03-19 at 12:56 +0100, Guillaume Leclanche wrote:
> Hello,
> 
> I browsed the source code, and I've seen that modem manager supports
> only "IP" type of PDP (that is, IPv4). Knowing the network
> requirements for IPv6 and AT commands, I started checking what would
> have to be changed in the code to have support of IPv6 working
> properly. But honestly I've not coded in C in the last 10 years, and
> although the code is very clean (congratulations !), the architecture
> is not documented and I ended up wondering the role of each function.
> 
> I have the knowledge of network and AT commands, plus I own the
> hardware and 3GPP network to test, so is anybody with good knowledge
> of modemmanager architecture & code willing to team with me to
> implement v6 over 3GPP ? It's probably not a lot of code, but you need
> to know where to do all changes.

Yes, we do need IPv6 support in MM... great to hear you're interested.
There's a few issues here that we need to handle.

1) detecting the available PDP context types: many many modems only
support the IP type, but others will support the IPV4/V6 types as well,
especially newer ones.  So we'll need to add some code to the enable
sequence (mm-generic-gsm.c) to request AT+CGDCONT=? and pick out the
available PDP context types.  There's code that already does some of
this, but only for AT+CGDCONT? to get the currently defined PDP
contexts, while we need to get the *possible* ones.

2) based on that, we need some way of figuring out whether we can do a
single V4/V6 PDP context, or whether we might have to do separate PDP
contexts if the modem can't do both in the same PDP at the same time; I
seem to recall that sometimes you have to use a secondary PDP context
for IPv6.  But for the start, I'd suggest only handling the V4V6 context
type if your modem supports it, or doing one-or-the-other.

3) we need to define some "simple connect" key/value pairs that indicate
what the user wants the IP addressing to be; this could be as simple as
a key name of "ip-config" with values of "v4", "v6", and "v4v6" or
something like that.  Keep in mind that we'll probably want to use this
for CDMA too if we can, which doesn't have PDP contexts, so we should
keep it generic.

4) we'll need to somehow indicate to clients (like NetworkManager) what
sort of PDP context actually got negotiated; do we allow failure of some
method and fallback to another?  ie if the user wants IPv6 but doesn't
care if they only get IPv4, do we need to bother handling that?

Just some thought's it's really not to hard I think to implement the
basics here.  But having answers or at least a direction on some of
these questions might help us figure out how to best implement it.

What do you think?  We'd be glad to have your help and input on this :)

Cheers,
Dan




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]