On 12/09/13 11:05, Thomas Mieslinger wrote:
[...]

It would be helpful for that overview page if I could display the
switchport right away.

So for me, I'd just need PortID and PortDescr. But for other uses, I
guess that ChassisID, SysName and SysDescr could be useful.

For naming ipxe variables, I'd propose the trick to compose the name of
a prefix and the original variable name. Example: lldp-PortDescr which
then would be used as ${net0/lldp-PortID:uristring}.

Ok, so the next step would be wait for the approval of the variable
names and then to propose a patch.

From a quick look at the LLDP specs, it seems as though the mapping

  ${net0.lldp/<length>.<offset>.<type>}

might be reasonably natural, where <type> is the LLDP TLV type, and <offset> and <length> describe the offset and length of the desired data within the TLV value. (As a special case, a <length> of zero could indicate "all remaining data".)

This would allow for some fairly simple encodings of simple values, e.g.

  ${net0.lldp/4:string} for the Port Description
  ${net0.lldp/5:string} for the System Name
  ${net0.lldp/3:uint16} for the Time To Live

while also allowing for access to the more complex LLDP data structures

  ${net0.lldp/1.0.1:uint8} for the Chassis ID Subtype
  ${net0.lldp/1.1:hex} for the Chassis ID

There seems to be no way to solicit LLDP information; iPXE would just have to wait for an LLDP packet to arrive. This wait could be implemented within an iPXE script, e.g.:

  ifopen
  :lldp
  isset ${net0.lldp/1} && goto lldp_done
  sleep 1
  goto lldp
  :lldp_done

I'm assuming that we need to support only point-to-point LANs, and that we can get away with receive-only operation (i.e. no need to transmit our own LLDP information).

Michael
_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to