package hns import ( "github.com/sirupsen/logrus" ) type HNSSupportedFeatures struct { Acl HNSAclFeatures `json:"ACL"` } type HNSAclFeatures struct { AclAddressLists bool `json:"AclAddressLists"` AclNoHostRulePriority bool `json:"AclHostRulePriority"` AclPortRanges bool `json:"AclPortRanges"` AclRuleId bool `json:"AclRuleId"` } func GetHNSSupportedFeatures() HNSSupportedFeatures { var hnsFeatures HNSSupportedFeatures globals, err := GetHNSGlobals() if err != nil { // Expected on pre-1803 builds, all features will be false/unsupported logrus.Debugf("Unable to obtain HNS globals: %s", err) return hnsFeatures } hnsFeatures.Acl = HNSAclFeatures{ AclAddressLists: isHNSFeatureSupported(globals.Version, HNSVersion1803), AclNoHostRulePriority: isHNSFeatureSupported(globals.Version, HNSVersion1803), AclPortRanges: isHNSFeatureSupported(globals.Version, HNSVersion1803), AclRuleId: isHNSFeatureSupported(globals.Version, HNSVersion1803), } return hnsFeatures } func isHNSFeatureSupported(currentVersion HNSVersion, minVersionSupported HNSVersion) bool { if currentVersion.Major < minVersionSupported.Major { return false } if currentVersion.Major > minVersionSupported.Major { return true } if currentVersion.Minor < minVersionSupported.Minor { return false } return true }