mirror of https://github.com/k3s-io/k3s
41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package dhcp4
|
|
|
|
type OptionCode byte
|
|
|
|
type Option struct {
|
|
Code OptionCode
|
|
Value []byte
|
|
}
|
|
|
|
// Map of DHCP options
|
|
type Options map[OptionCode][]byte
|
|
|
|
// SelectOrderOrAll has same functionality as SelectOrder, except if the order
|
|
// param is nil, whereby all options are added (in arbitrary order).
|
|
func (o Options) SelectOrderOrAll(order []byte) []Option {
|
|
if order == nil {
|
|
opts := make([]Option, 0, len(o))
|
|
for i, v := range o {
|
|
opts = append(opts, Option{Code: i, Value: v})
|
|
}
|
|
return opts
|
|
}
|
|
return o.SelectOrder(order)
|
|
}
|
|
|
|
// SelectOrder returns a slice of options ordered and selected by a byte array
|
|
// usually defined by OptionParameterRequestList. This result is expected to be
|
|
// used in ReplyPacket()'s []Option parameter.
|
|
func (o Options) SelectOrder(order []byte) []Option {
|
|
opts := make([]Option, 0, len(order))
|
|
for _, v := range order {
|
|
if data, ok := o[OptionCode(v)]; ok {
|
|
opts = append(opts, Option{Code: OptionCode(v), Value: data})
|
|
}
|
|
}
|
|
return opts
|
|
}
|
|
|
|
type OpCode byte
|
|
type MessageType byte // Option 53
|