1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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
- }
|