本文整理匯總了Golang中github.com/contiv/ofnet.OfnetPolicyRule類的典型用法代碼示例。如果您正苦於以下問題:Golang OfnetPolicyRule類的具體用法?Golang OfnetPolicyRule怎麽用?Golang OfnetPolicyRule使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了OfnetPolicyRule類的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: createOfnetRule
// createOfnetRule creates a directional ofnet rule
func (gp *EpgPolicy) createOfnetRule(rule *contivModel.Rule, dir string) (*ofnet.OfnetPolicyRule, error) {
ruleID := gp.EpgPolicyKey + ":" + rule.Key + ":" + dir
// Create an ofnet rule
ofnetRule := new(ofnet.OfnetPolicyRule)
ofnetRule.RuleId = ruleID
ofnetRule.Priority = rule.Priority
ofnetRule.Action = rule.Action
remoteEpgID := 0
// See if user specified an endpoint Group in the rule
if rule.EndpointGroup != "" {
epgKey := rule.TenantName + ":" + rule.EndpointGroup
// find the endpoint group
epg := contivModel.FindEndpointGroup(epgKey)
if epg == nil {
log.Errorf("Error finding endpoint group %s", epgKey)
return nil, core.Errorf("endpoint group not found")
}
remoteEpgID = epg.EndpointGroupID
}
// Set protocol
switch rule.Protocol {
case "tcp":
ofnetRule.IpProtocol = 6
case "udp":
ofnetRule.IpProtocol = 17
case "icmp":
ofnetRule.IpProtocol = 1
case "igmp":
ofnetRule.IpProtocol = 2
case "":
ofnetRule.IpProtocol = 0
default:
proto, err := strconv.Atoi(rule.Protocol)
if err == nil && proto < 256 {
ofnetRule.IpProtocol = uint8(proto)
}
}
// Set directional parameters
switch dir {
case "inRx":
// Set src/dest endpoint group
ofnetRule.DstEndpointGroup = gp.EndpointGroupID
ofnetRule.SrcEndpointGroup = remoteEpgID
// Set src/dest IP Address
ofnetRule.SrcIpAddr = rule.IpAddress
// set port numbers
ofnetRule.DstPort = uint16(rule.Port)
// set tcp flags
if rule.Protocol == "tcp" && rule.Port == 0 {
ofnetRule.TcpFlags = "syn,!ack"
}
case "inTx":
// Set src/dest endpoint group
ofnetRule.SrcEndpointGroup = gp.EndpointGroupID
ofnetRule.DstEndpointGroup = remoteEpgID
// Set src/dest IP Address
ofnetRule.DstIpAddr = rule.IpAddress
// set port numbers
ofnetRule.SrcPort = uint16(rule.Port)
case "outRx":
// Set src/dest endpoint group
ofnetRule.DstEndpointGroup = gp.EndpointGroupID
ofnetRule.SrcEndpointGroup = remoteEpgID
// Set src/dest IP Address
ofnetRule.SrcIpAddr = rule.IpAddress
// set port numbers
ofnetRule.SrcPort = uint16(rule.Port)
case "outTx":
// Set src/dest endpoint group
ofnetRule.SrcEndpointGroup = gp.EndpointGroupID
ofnetRule.DstEndpointGroup = remoteEpgID
// Set src/dest IP Address
ofnetRule.DstIpAddr = rule.IpAddress
// set port numbers
ofnetRule.DstPort = uint16(rule.Port)
// set tcp flags
if rule.Protocol == "tcp" && rule.Port == 0 {
ofnetRule.TcpFlags = "syn,!ack"
}
default:
log.Fatalf("Unknown rule direction %s", dir)
}
//.........這裏部分代碼省略.........
示例2: createOfnetRule
// createOfnetRule creates a directional ofnet rule
func (gp *EpgPolicy) createOfnetRule(rule *contivModel.Rule, dir string) (*ofnet.OfnetPolicyRule, error) {
var remoteEpgID int
var err error
ruleID := gp.EpgPolicyKey + ":" + rule.Key + ":" + dir
// Create an ofnet rule
ofnetRule := new(ofnet.OfnetPolicyRule)
ofnetRule.RuleId = ruleID
ofnetRule.Priority = rule.Priority
ofnetRule.Action = rule.Action
// See if user specified an endpoint Group in the rule
if rule.FromEndpointGroup != "" {
remoteEpgID, err = GetEndpointGroupID(stateStore, rule.FromEndpointGroup, rule.TenantName)
if err != nil {
log.Errorf("Error finding endpoint group %s/%s/%s. Err: %v",
rule.FromEndpointGroup, rule.FromNetwork, rule.TenantName, err)
}
} else if rule.ToEndpointGroup != "" {
remoteEpgID, err = GetEndpointGroupID(stateStore, rule.ToEndpointGroup, rule.TenantName)
if err != nil {
log.Errorf("Error finding endpoint group %s/%s/%s. Err: %v",
rule.ToEndpointGroup, rule.ToNetwork, rule.TenantName, err)
}
} else if rule.FromNetwork != "" {
netKey := rule.TenantName + ":" + rule.FromNetwork
net := contivModel.FindNetwork(netKey)
if net == nil {
log.Errorf("Network %s not found", netKey)
return nil, errors.New("FromNetwork not found")
}
rule.FromIpAddress = net.Subnet
} else if rule.ToNetwork != "" {
netKey := rule.TenantName + ":" + rule.ToNetwork
net := contivModel.FindNetwork(netKey)
if net == nil {
log.Errorf("Network %s not found", netKey)
return nil, errors.New("ToNetwork not found")
}
rule.ToIpAddress = net.Subnet
}
// Set protocol
switch rule.Protocol {
case "tcp":
ofnetRule.IpProtocol = 6
case "udp":
ofnetRule.IpProtocol = 17
case "icmp":
ofnetRule.IpProtocol = 1
case "igmp":
ofnetRule.IpProtocol = 2
case "":
ofnetRule.IpProtocol = 0
default:
proto, err := strconv.Atoi(rule.Protocol)
if err == nil && proto < 256 {
ofnetRule.IpProtocol = uint8(proto)
}
}
// Set directional parameters
switch dir {
case "inRx":
// Set src/dest endpoint group
ofnetRule.DstEndpointGroup = gp.EndpointGroupID
ofnetRule.SrcEndpointGroup = remoteEpgID
// Set src/dest IP Address
ofnetRule.SrcIpAddr = rule.FromIpAddress
// set port numbers
ofnetRule.DstPort = uint16(rule.Port)
// set tcp flags
if rule.Protocol == "tcp" && rule.Port == 0 {
ofnetRule.TcpFlags = "syn,!ack"
}
case "inTx":
// Set src/dest endpoint group
ofnetRule.SrcEndpointGroup = gp.EndpointGroupID
ofnetRule.DstEndpointGroup = remoteEpgID
// Set src/dest IP Address
ofnetRule.DstIpAddr = rule.FromIpAddress
// set port numbers
ofnetRule.SrcPort = uint16(rule.Port)
case "outRx":
// Set src/dest endpoint group
ofnetRule.DstEndpointGroup = gp.EndpointGroupID
ofnetRule.SrcEndpointGroup = remoteEpgID
// Set src/dest IP Address
//.........這裏部分代碼省略.........