예제 #1
0
 def _nexthop_actions(self, eth_dst, vlan):
     ofmsgs = []
     if self.routers:
         ofmsgs.append(valve_of.set_vlan_vid(vlan.vid))
     ofmsgs.extend([
         valve_of.set_eth_src(self.faucet_mac),
         valve_of.set_eth_dst(eth_dst),
         valve_of.dec_ip_ttl()])
     return ofmsgs
예제 #2
0
def rewrite_vlan(output_dict):
    vlan_actions = []
    if 'pop_vlans' in output_dict:
        for _ in range(output_dict['pop_vlans']):
            vlan_actions.append(valve_of.pop_vlan())
    # if vlan tag is specified, push it.
    if 'vlan_vid' in output_dict:
        vlan_actions.extend(valve_of.push_vlan_act(output_dict['vlan_vid']))
    # swap existing VID
    elif 'swap_vid' in output_dict:
        vlan_actions.append(valve_of.set_vlan_vid(output_dict['swap_vid']))
    # or, if a list, push them all (all with type Q).
    elif 'vlan_vids' in output_dict:
        for vid in output_dict['vlan_vids']:
            vlan_actions.extend(valve_of.push_vlan_act(vid))
    return vlan_actions