本文整理汇总了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)
}
//.........这里部分代码省略.........
开发者ID:golisai,项目名称:netplugin,代码行数:101,代码来源:policy.go
示例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
//.........这里部分代码省略.........
开发者ID:jojimt,项目名称:netplugin,代码行数:101,代码来源:policyState.go
注:本文中的github.com/contiv/ofnet.OfnetPolicyRule类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论