def GetRSPANEncapFromVnic(testcase, inpkt, args=None): encaps = [] vnic = testcase.config.localmapping.VNIC encap = infra_api.GetPacketTemplate( 'ENCAP_QINQ' ) if vnic.VnicEncap.Type == "dot1q" else infra_api.GetPacketTemplate( 'ENCAP_QTAG') encaps.append(encap) return encaps
def GetPacketEncaps(testcase, packet): encaps = [] if testcase.config.root.segment.native == False: encaps.append(infra_api.GetPacketTemplate('ENCAP_QTAG')) if testcase.config.root.segment.IsFabEncapVxlan(): encaps.append(infra_api.GetPacketTemplate('ENCAP_VXLAN')) return encaps
def GetDhcpSeverPacketEncaps(testcase, packet): encaps = [] if testcase.pvtdata.dhcp_server.segment.native == False: encaps.append(infra_api.GetPacketTemplate('ENCAP_QTAG')) if testcase.pvtdata.dhcp_server.segment.IsFabEncapVxlan(): encaps.append(infra_api.GetPacketTemplate('ENCAP_VXLAN')) return encaps
def __get_packet_template_impl(obj, args): template = 'ETH' template += "_%s" % (obj.AddrFamily) if args is not None: template += "_%s" % (args.proto) return infra_api.GetPacketTemplate(template)
def PickPktTemplate(tc, pkt, args=None): if tc.config.nvmesession.session.IsIPV6(): template = args.v6 else: template = args.v4 logger.info("ChoosePacketTemplateByFlow: Picking %s" % (template)) return infra_api.GetPacketTemplate(template)
def __get_packet_encap_impl(obj, tunnel, args): if obj.IsEncapTypeVXLAN(): encap = 'ENCAP_VXLAN' elif obj.IsEncapTypeMPLS(): encap = __get_packet_encap_type_impl(tunnel, args) else: assert 0 return infra_api.GetPacketTemplate(encap)
def GetPacketTemplate(testcase, packet): acl = __get_acl_from_tc(testcase) if acl.MatchOnProto(): if testcase.config.flow.IsIPV4(): template = 'ETH_IPV4_PROTO_200' else: template = 'ETH_IPV6_PROTO_190' return infra_api.GetPacketTemplate(template) return networking.GetPacketTemplateByFlow(testcase, packet)
def __get_packet_encap_impl_from_route(obj, tunnel, args): if obj.IsEncapTypeVXLAN(): direction = __get_module_args_value(args, 'direction') if tunnel.Type is tunnel_pb2.TUNNEL_TYPE_SERVICE and \ tunnel.Remote is True and direction == "remote2local": encap = 'ENCAP_VXLAN2' else: encap = 'ENCAP_VXLAN' else: assert 0 return infra_api.GetPacketTemplate(encap)
def __get_packet_template_impl(flow, pkttemplate): if pkttemplate is not None: template = pkttemplate else: template = 'ETH' if flow.IsIP(): template += "_%s_%s" % (flow.type, flow.proto) else: assert (0) return infra_api.GetPacketTemplate(template)
def __get_packet_template_from_policy_impl(rule, policy, protocol=None): if 'no-' not in policy.PolicyType: protocol = protocol if protocol else __get_proto_from_policy_rule(rule) template = 'ETH_%s_%s' % (policy.AddrFamily, protocol) else: if "no-tcp" in policy.PolicyType: template = 'ETH_%s_%s' % (policy.AddrFamily, 'TCP') elif 'no-udp' in policy.PolicyType: template = 'ETH_%s_%s' % (policy.AddrFamily, 'UDP') elif 'no-icmp' in policy.PolicyType: template = 'ETH_%s_%s' % (policy.AddrFamily, 'ICMP') return infra_api.GetPacketTemplate(template)
def __get_packet_template_impl(flow, args): template = 'ETH' if flow.IsIP(): template += "_%s_%s" % (flow.type, flow.proto) elif flow.IsMulticast(): template += "_%s_UDP" % (flow.GetMulticastL3Type()) elif flow.IsMAC(): template = 'ETH' else: assert (0) if args is not None: template += "_%s" % (args.proto) return infra_api.GetPacketTemplate(template)
def __get_packet_template_impl(obj, tsargs=None, modargs=None): af = obj.AddrFamily template = 'ETH' template += "_%s" % (af) proto = None # testspec args takes precedence over module args if tsargs is not None: proto = tsargs.proto elif modargs is not None: proto = __get_module_args_value(modargs, 'proto') else: assert (0) if af == "IPV6" and proto == "icmp": proto = "icmpv6" template += "_%s" % (proto) return infra_api.GetPacketTemplate(template)
def __get_host_packet_encap_impl(vnic): encapId = encapType2Id(vnic.VnicEncap.Type) if not encapId: return [] return [infra_api.GetPacketTemplate(encapId)]
def __get_host_packet_encap_impl(vnic): encaps = [] if vnic.IsEncapTypeVLAN(): vlan_encap = infra_api.GetPacketTemplate('ENCAP_QTAG') encaps.append(vlan_encap) return encaps
def __get_mapping_packet_encap_impl(dev, lmap, args): if dev.IsEncapTypeVXLAN(): encap = 'ENCAP_VXLAN_IPV6' if lmap.TunFamily == 'IPV6' else 'ENCAP_VXLAN' else: assert 0 return infra_api.GetPacketTemplate(encap)
def __get_packet_template_from_policy_impl(rule, policy): protocol = __get_proto_from_policy_rule(rule) template = 'ETH_%s_%s' % (policy.AddrFamily, protocol) return infra_api.GetPacketTemplate(template)
def GetPacketEncaps(testcase, packet): encaps = [] encaps.append(infra_api.GetPacketTemplate('ENCAP_QTAG')) return encaps
def __get_template(tid): if tid == None: return None return infra_api.GetPacketTemplate(tid)