>> 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