[PATCH 03/11] gatppp: Add PPP server extension

Zhang, Zhenhua zhenhua.zhang at intel.com
Mon Jun 21 23:31:58 PDT 2010


Hi Denis,

Denis Kenzior wrote:
> Hi Zhenhua,
> 
>>>> +void ipcp_set_server_info(struct pppcp_data *pppcp, guint32
>>>> local_addr, +				guint32
> peer_addr, +				guint32 dns1, guint32 dns2,
>>>> +				guint32 nbns1, guint32 nbns2)
>>>> +{
>>>> +	struct ipcp_data *ipcp = pppcp_get_data(pppcp);
>>>> +
>>>> +	ipcp->req_options = REQ_OPTION_IPADDR | REQ_OPTION_DNS1 |
>>>> +				REQ_OPTION_DNS2 | REQ_OPTION_NBNS1 |
>>>> +				REQ_OPTION_NBNS2;
>>>> +
>>>> +	ipcp->local_addr = local_addr;
>>>> +	ipcp->peer_addr = peer_addr;
>>>> +	ipcp->dns1 = dns1;
>>>> +	ipcp->dns2 = dns2;
>>>> +	ipcp->nbns1 = nbns1;
>>>> +	ipcp->nbns2 = nbns2;
>>>> +
>>>> +	ipcp_generate_config_options(ipcp);
>>> 
>>> Please note that this function is currently having no effect,
>>> you're missing a call to pppcp_set_local_options.  However, in the
>>> case of a server, we actually do not want to request DNS or NBNS,
>>> and we should only send our local address to the peer if it is
>>> non-zero.  Please note that all PPP modems we have encountered so
>>> far, do not send their local IP address in a Configure- Request. 
>>> Thus calling ipcp_set_server_info should end up generating an empty
>>> Configure-Request or with only the local IP address present. 
>> 
>> It's confused me a little. Please correct me if I am wrong. I think
>>  PPP modem should send their local IP address to peer in a
>>  Configure-Request. So client could accept the peer address in
>> ipcp_rcr. 
> 
> This is correct if the PPP server wants to do so, it is perfectly OK
> for the server not to send its IP address (e.g. if it doesn't have
> one.)  This is what we observe on most PPP modems.

Okay. That's fine. At least, PPP server need to send peer_addr in Conf-Nak reply. Client 'thinks' it's server address.

>> 
>> In the case of a server, ipcp_set_server_info() should set local,
>>  peer, DNS and NBNS info and call pppcp_set_local_options(). And
>>  server only send our local address to peer in a Configure-Request.
> 
> I'd modify this slightly.  If ipcp_set_server_info is called with
> server's local address as 0, then don't even send IP-Address in a
> configure Request. This wouldn't make sense, in effect the server is
> asking the client to provide its IP address. Otherwise, go ahead and
> send it (as the client will simply ack).

No problems. If server local address is zero, we don't send IP in a configure request.

>> 
>>>> +}
>>>> +
>>>>  static void ipcp_reset_config_options(struct ipcp_data *ipcp)  {
>>>>  	ipcp->req_options = REQ_OPTION_IPADDR | REQ_OPTION_DNS1 |
>>>>  				REQ_OPTION_DNS2 | REQ_OPTION_NBNS1 |
>>>>  				REQ_OPTION_NBNS2;
>>>> -	ipcp->ipaddr = 0;
>>>> +	ipcp->local_addr = 0;
>>> 
>>> In the case of a server, the local_address should not be reset.
>> 
>> It seems we need to add a flag in ipcp_data to indicate whether it's
>>  server or not. Does it make sense?
> 
> Might be a good idea.
> 
> Regards,
> -Denis



Regards,
Zhenhua



More information about the ofono mailing list