Page 1 of 2

Ipoe и lua

Posted: 05 Nov 2014, 13:15
by truten
Добрый день.
Пытаюсь понять, что написать в accel-ppp.lua. Есть оборудование OLT BDCOM Option 82 в Remote-ID передается мак адреес ONU, это мне более чем подходит. Accel прекрасно его различает:

Code: Select all

[2014-11-05 16:39:48.811] em1.20: : recv [DHCPv4 Discover xid=542802c9 giaddr=192.168.6.253 chaddr=00:18:f3:e6:e1:54 <Message-Type Discover> <Request-IP 192.168.6.3> <Host-Name vv-laptop> <Request-List Subnet,Broadcast,Time-Offset,Router,Domain-Name,DNS,119,Host-Name,44,47,MTU,Classless-Route,NTP,Classless-Route,249,252,NTP> <Relay-Agent {Agent-Circuit-ID _0014000701} {Agent-Remote-ID _fcfaf7c57e03} {Option-9 _00000cf8080106537769746368}>]
Что нужно прописать в lua что-бы передавать в радиус вместо MAC PC, MAC ONU, по идее мне нужно только двоеточия рассавить, но как это сделать?
P.S. в wiki ничего не нашел http://accel-ppp.org/wiki/doku.php?id=ipoe_dhcp_lua

Re: Ipoe и lua

Posted: 05 Nov 2014, 13:27
by Dmitry
как-то так:

Code: Select all

#!lua
function username(pkt)
    v,b1,b2,b3,b4,b5,b6=string.unpack(pkt:agent_remote_id(),'bbbbbb')
    local username=b1..':'..b2..':'..b3..':'..b4..':'..b5..':'..b6
    return username
end

Re: Ipoe и lua

Posted: 05 Nov 2014, 13:59
by truten
Accel тепер циферки передает, формат не тот как я понял

Code: Select all

send [RADIUS(1) Access-Request id=1 <User-Name "252:250:247:197:126:3"> 

Re: Ipoe и lua

Posted: 05 Nov 2014, 16:12
by Dmitry

Code: Select all

#!lua
function username(pkt)
    v,b1,b2,b3,b4,b5,b6=string.unpack(pkt:agent_remote_id(),'bbbbbb')
    return string.format("%02x:%02x:%02x:%02x:%02x:%02x", b1,b2,b3,b4,b5,b6)
end

Re: Ipoe и lua

Posted: 06 Nov 2014, 05:59
by truten
Спасибо большое, работает четко!

Re: Ipoe и lua

Posted: 06 Nov 2014, 13:07
by adeep
truten wrote:Спасибо большое, работает четко!
Поделитесь, пожалуйста конфигом олта/ону?

Re: Ipoe и lua

Posted: 06 Nov 2014, 14:37
by truten
Скинул в личку

Re: Ipoe и lua

Posted: 10 Dec 2014, 13:05
by kycherr
truten wrote:Скинул в личку
А можно и мне?
Очень надо конф та же проблема!
Зарание спасибо!

Re: Ipoe и lua

Posted: 20 Jun 2015, 06:46
by truten
Извиняюсь за некропост..
Начальство купило китайские ОНУшки, они первые несколько пакетов (4-5) шлют без опции 82, бывает вылитает accel:

Code: Select all

em2.73: : ipoe: lua: /etc/accel-ppp.lua:2: bad argument #1 to 'unpack' (string expected, got nil)
Решил устроить проверку, lua не знаю вообще пишу:

Code: Select all

function username(pkt)
    if agent_remote_id() ~= nil then
    v,b1,b2,b3,b4,b5,b6=string.unpack(pkt:agent_remote_id(),'bbbbbb')
    return string.format("%02x:%02x:%02x:%02x:%02x:%02x", b1,b2,b3,b4,b5,b6)
    end
end
В ответ:

Code: Select all

em2.29: : ipoe: lua: /etc/accel-ppp.lua:2: attempt to call global 'agent_remote_id' (a nil value)
Что делаю не так? Как можно это правильно написать?

Re: Ipoe и lua

Posted: 20 Jun 2015, 10:03
by truten
Сделал так, работает

Code: Select all

function username(pkt)
    if pkt:agent_remote_id() ~= nil then
        v,b1,b2,b3,b4,b5,b6=string.unpack(pkt:agent_remote_id(),'bbbbbb')
        return string.format("%02x:%02x:%02x:%02x:%02x:%02x", b1,b2,b3,b4,b5,b6)
    else return string.format("00:00:00:00:00:00")
    end
end