There are three ways to try to support BSDP on isc-dhcp-server.
The first method involves using a binary string as the parameter to vendor-
encapsulated-options. I have read reports this works in some isolated setups,
but this is difficult to understand, hard to trouble shoot and as clear as
reading mud.
The second way is to use an encapsulated option space. This works reasonably
well except for suboption 9 where you have to use this:
option space bsdp;
option bsdp.boot_image_list code 9 = string;
option bsdp-43 code 43 = encapsulate bsdp;
and put binary data in the string using this simple perl script:
#!/usr/bin/perl -pw
s!^(\d+)[ ]+(\d+)[ ]+(\d+|auto)[ ]+(.*)$!join q(:), grep {$_}
split /(..)/,unpack(q(H*),pack(q(CxnC/a),($1<<7)+$2,$3,$4))!e;
the third way is to do it right
option space bsdp;
#option bsdp.boot_image_list code 9 = array of { unsigned integer 1,
unsigned integer 7, unsigned integer 24, string };
option bsdp-43 code 43 = encapsulate bsdp;
The drawback of this approach is that of course it does not work. you can't
have strings in arrays and integers must be 8,16 or 32 bits. The integer part
is only slightly annoying, but the strings are very annoying. In
http://permalink.gmane.org/gmane.network.dhcp.isc.dhcp-server/11458 Celelibi is
trying to use RFC 5970 which calls for 'option dhcp6.bootfile-param code 60 =
array of string;'