GPON OLT sends data in ASCII format, so no conversion is necessary. But commutators send it in binary type. I use two separate function for GPON and ethernet commutators:
function gpon(pkt)
return pkt:agent_circuit_id()
end
function switch(pkt)
local hex_circuit_id=''
local fmt_circuit_id=''
local hex_remote_id=''
local fmt_remote_id=''
len_circuit=string.len(pkt:agent_circuit_id())+1
len_remote=string.len(pkt:agent_remote_id())+1
for i = 1, len_circuit do
hex_circuit_id=hex_circuit_id..'%02x'
fmt_circuit_id=fmt_circuit_id..'b'
end
for j = 1, len_remote do
hex_remote_id=hex_remote_id..'%02x'
fmt_remote_id=fmt_remote_id..'b'
end
local circuit_id=string.format(hex_circuit_id, string.unpack(pkt:agent_circuit_id(),fmt_circuit_id))
local remote_id=string.format(hex_remote_id, string.unpack(pkt:agent_remote_id(),fmt_remote_id))
return string.sub(circuit_id,3)..'-'..string.sub(remote_id,3)
end