| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | package modelsimport (	"net"	"time")// AllowedTrafficDirection - allowed direction of traffictype AllowedTrafficDirection intconst (	// TrafficDirectionUni implies traffic is only allowed in one direction (src --> dst)	TrafficDirectionUni AllowedTrafficDirection = iota	// TrafficDirectionBi implies traffic is allowed both direction (src <--> dst )	TrafficDirectionBi)// Protocol - allowed protocoltype Protocol stringconst (	ALL  Protocol = "all"	UDP  Protocol = "udp"	TCP  Protocol = "tcp"	ICMP Protocol = "icmp")type ServiceType stringconst (	Http        = "HTTP"	Https       = "HTTPS"	AllTCP      = "All TCP"	AllUDP      = "All UDP"	ICMPService = "ICMP"	Custom      = "Custom"	Any         = "Any")func (p Protocol) String() string {	return string(p)}type AclPolicyType stringconst (	UserPolicy   AclPolicyType = "user-policy"	DevicePolicy AclPolicyType = "device-policy")type AclPolicyTag struct {	ID    AclGroupType `json:"id"`	Value string       `json:"value"`}type AclGroupType stringconst (	UserAclID                AclGroupType = "user"	UserGroupAclID           AclGroupType = "user-group"	DeviceAclID              AclGroupType = "tag"	NetmakerIPAclID          AclGroupType = "ip"	NetmakerSubNetRangeAClID AclGroupType = "ipset")func (g AclGroupType) String() string {	return string(g)}type UpdateAclRequest struct {	Acl	NewName string `json:"new_name"`}type AclPolicy struct {	TypeID        AclPolicyType	PrefixTagUser AclGroupType}type Acl struct {	ID               string                  `json:"id"`	Default          bool                    `json:"default"`	MetaData         string                  `json:"meta_data"`	Name             string                  `json:"name"`	NetworkID        NetworkID               `json:"network_id"`	RuleType         AclPolicyType           `json:"policy_type"`	Src              []AclPolicyTag          `json:"src_type"`	Dst              []AclPolicyTag          `json:"dst_type"`	Proto            Protocol                `json:"protocol"` // tcp, udp, etc.	ServiceType      string                  `json:"type"`	Port             []string                `json:"ports"`	AllowedDirection AllowedTrafficDirection `json:"allowed_traffic_direction"`	Enabled          bool                    `json:"enabled"`	CreatedBy        string                  `json:"created_by"`	CreatedAt        time.Time               `json:"created_at"`}type AclPolicyTypes struct {	ProtocolTypes []ProtocolType	RuleTypes     []AclPolicyType `json:"policy_types"`	SrcGroupTypes []AclGroupType  `json:"src_grp_types"`	DstGroupTypes []AclGroupType  `json:"dst_grp_types"`}type ProtocolType struct {	Name             string     `json:"name"`	AllowedProtocols []Protocol `json:"allowed_protocols"`	PortRange        string     `json:"port_range"`	AllowPortSetting bool       `json:"allow_port_setting"`}type AclRule struct {	ID              string                  `json:"id"`	IPList          []net.IPNet             `json:"ip_list"`	IP6List         []net.IPNet             `json:"ip6_list"`	AllowedProtocol Protocol                `json:"allowed_protocols"` // tcp, udp, etc.	AllowedPorts    []string                `json:"allowed_ports"`	Direction       AllowedTrafficDirection `json:"direction"` // single or two-way	Allowed         bool}
 |