>> it looks like in pppoe.c the block
>>
>>       if((s = findtag(pkt, TagSrvName, &len, 0)) == nil)
>>               return bad("no matching service name");
>>       if(len != strlen(srvname) || memcmp(s, srvname, len) != 0)
>>               return bad("no matching service name");
>>
>> should be inside a if(srvname[0] != '\0') { ... }.
>
> this is because the PPPoE RFC defines strings "provider name/access
> concentrator" and "service name" in service offer packets, in case you have
> lots of providers and different connections in your network. The services may
> include different payment packages, special line for voip/video, a VPN, etc.
> Offers are collected after a request broadcast.

i understand the protocol.
but if there is no -S option given, the current code
waits for an offer with service name == "".
that's silly.  it should take the first one it gets.

russ

Reply via email to