summaryrefslogtreecommitdiffhomepage
path: root/dhcpv6/ztpv6/mellanox.go
diff options
context:
space:
mode:
authorPablo Mazzini <pmazzini@gmail.com>2023-06-12 14:47:59 +0100
committerGitHub <noreply@github.com>2023-06-12 14:47:59 +0100
commitb20c9ba983dfec6371555e7baa343aabd388b22c (patch)
tree71fe52ce0bcea53d58e3c3d0b398c406a24e8c6c /dhcpv6/ztpv6/mellanox.go
parent49801966e6cb2cfc58a2bd98f69a9c182c1d4c18 (diff)
parentcb5419b1e557224267460a7ca12d0d32bd4882a9 (diff)
Merge pull request #503 from gepoggio/mlnx-os
Add MLNX-OS ZTPv6 vendor data parsing
Diffstat (limited to 'dhcpv6/ztpv6/mellanox.go')
-rw-r--r--dhcpv6/ztpv6/mellanox.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/dhcpv6/ztpv6/mellanox.go b/dhcpv6/ztpv6/mellanox.go
new file mode 100644
index 0000000..3ed8b43
--- /dev/null
+++ b/dhcpv6/ztpv6/mellanox.go
@@ -0,0 +1,37 @@
+package ztpv6
+
+import (
+ "errors"
+
+ "github.com/insomniacslk/dhcp/dhcpv6"
+ "github.com/insomniacslk/dhcp/iana"
+)
+
+type MlnxSubOption uint16
+
+const (
+ MlnxSubOptionModel MlnxSubOption = 1
+ MlnxSubOptionPartNum MlnxSubOption = 2
+ MlnxSubOptionSerial MlnxSubOption = 3
+ MlnxSubOptionMac MlnxSubOption = 4
+ MlnxSubOptionProfile MlnxSubOption = 5
+ MlnxSubOptionRelease MlnxSubOption = 6
+)
+
+func getMellanoxVendorData(vendorOptsOption *dhcpv6.OptVendorOpts) (*VendorData, error) {
+ vd := VendorData{}
+ vd.VendorName = iana.EnterpriseIDMellanoxTechnologiesLTD.String()
+ for _, opt := range vendorOptsOption.VendorOpts {
+ switch MlnxSubOption(opt.Code()) {
+ case MlnxSubOptionSerial:
+ vd.Serial = string(opt.ToBytes())
+ case MlnxSubOptionModel:
+ vd.Model = string(opt.ToBytes())
+ }
+ }
+ if (vd.Serial == "") || (vd.Model == "") {
+ return nil, errors.New("couldn't parse Mellanox sub-option for serial or model")
+ }
+
+ return &vd, nil
+}