| 
                                
                                    @@ 750-781 (lines=32) @@
                                 | 
                            
                                                            
                                    | 747 | 
                                     | 
                                     | 
                                
                                                            
                                    | 748 | 
                                     | 
                                            return flow_mod  | 
                                
                                                            
                                    | 749 | 
                                     | 
                                     | 
                                
                                                            
                                    | 750 | 
                                     | 
                                        def _prepare_push_flow(self, *args, queue_id=None):  | 
                                
                                                            
                                    | 751 | 
                                     | 
                                            """Prepare push flow.  | 
                                
                                                            
                                    | 752 | 
                                     | 
                                     | 
                                
                                                            
                                    | 753 | 
                                     | 
                                            Arguments:  | 
                                
                                                            
                                    | 754 | 
                                     | 
                                                in_interface(str): Interface input.  | 
                                
                                                            
                                    | 755 | 
                                     | 
                                                out_interface(str): Interface output.  | 
                                
                                                            
                                    | 756 | 
                                     | 
                                                in_vlan(str): Vlan input.  | 
                                
                                                            
                                    | 757 | 
                                     | 
                                                out_vlan(str): Vlan output.  | 
                                
                                                            
                                    | 758 | 
                                     | 
                                     | 
                                
                                                            
                                    | 759 | 
                                     | 
                                            Return:  | 
                                
                                                            
                                    | 760 | 
                                     | 
                                                dict: An python dictionary representing a FlowMod  | 
                                
                                                            
                                    | 761 | 
                                     | 
                                     | 
                                
                                                            
                                    | 762 | 
                                     | 
                                            """  | 
                                
                                                            
                                    | 763 | 
                                     | 
                                            # assign all arguments  | 
                                
                                                            
                                    | 764 | 
                                     | 
                                            in_interface, out_interface, in_vlan, out_vlan = args  | 
                                
                                                            
                                    | 765 | 
                                     | 
                                     | 
                                
                                                            
                                    | 766 | 
                                     | 
                                            flow_mod = self._prepare_flow_mod(  | 
                                
                                                            
                                    | 767 | 
                                     | 
                                                in_interface, out_interface, queue_id  | 
                                
                                                            
                                    | 768 | 
                                     | 
                                            )  | 
                                
                                                            
                                    | 769 | 
                                     | 
                                     | 
                                
                                                            
                                    | 770 | 
                                     | 
                                            # the service tag must be always pushed  | 
                                
                                                            
                                    | 771 | 
                                     | 
                                            new_action = {"action_type": "set_vlan", "vlan_id": out_vlan} | 
                                
                                                            
                                    | 772 | 
                                     | 
                                            flow_mod["actions"].insert(0, new_action)  | 
                                
                                                            
                                    | 773 | 
                                     | 
                                     | 
                                
                                                            
                                    | 774 | 
                                     | 
                                            new_action = {"action_type": "push_vlan", "tag_type": "s"} | 
                                
                                                            
                                    | 775 | 
                                     | 
                                            flow_mod["actions"].insert(0, new_action)  | 
                                
                                                            
                                    | 776 | 
                                     | 
                                     | 
                                
                                                            
                                    | 777 | 
                                     | 
                                            if in_vlan:  | 
                                
                                                            
                                    | 778 | 
                                     | 
                                                # if in_vlan is set, it must be included in the match  | 
                                
                                                            
                                    | 779 | 
                                     | 
                                                flow_mod["match"]["dl_vlan"] = in_vlan  | 
                                
                                                            
                                    | 780 | 
                                     | 
                                                new_action = {"action_type": "pop_vlan"} | 
                                
                                                            
                                    | 781 | 
                                     | 
                                                flow_mod["actions"].insert(0, new_action)  | 
                                
                                                            
                                    | 782 | 
                                     | 
                                            return flow_mod  | 
                                
                                                            
                                    | 783 | 
                                     | 
                                     | 
                                
                                                            
                                    | 784 | 
                                     | 
                                        def _prepare_pop_flow(  | 
                                
                                                                                
                                 | 
                                
                                    @@ 784-798 (lines=15) @@
                                 | 
                            
                                                            
                                    | 781 | 
                                     | 
                                                flow_mod["actions"].insert(0, new_action)  | 
                                
                                                            
                                    | 782 | 
                                     | 
                                            return flow_mod  | 
                                
                                                            
                                    | 783 | 
                                     | 
                                     | 
                                
                                                            
                                    | 784 | 
                                     | 
                                        def _prepare_pop_flow(  | 
                                
                                                            
                                    | 785 | 
                                     | 
                                            self, in_interface, out_interface, in_vlan, out_vlan, queue_id=None  | 
                                
                                                            
                                    | 786 | 
                                     | 
                                        ):  | 
                                
                                                            
                                    | 787 | 
                                     | 
                                            # pylint: disable=too-many-arguments  | 
                                
                                                            
                                    | 788 | 
                                     | 
                                            """Prepare pop flow."""  | 
                                
                                                            
                                    | 789 | 
                                     | 
                                            flow_mod = self._prepare_flow_mod(  | 
                                
                                                            
                                    | 790 | 
                                     | 
                                                in_interface, out_interface, queue_id  | 
                                
                                                            
                                    | 791 | 
                                     | 
                                            )  | 
                                
                                                            
                                    | 792 | 
                                     | 
                                            flow_mod["match"]["dl_vlan"] = out_vlan  | 
                                
                                                            
                                    | 793 | 
                                     | 
                                            if in_vlan:  | 
                                
                                                            
                                    | 794 | 
                                     | 
                                                new_action = {"action_type": "set_vlan", "vlan_id": in_vlan} | 
                                
                                                            
                                    | 795 | 
                                     | 
                                                flow_mod["actions"].insert(0, new_action)  | 
                                
                                                            
                                    | 796 | 
                                     | 
                                                new_action = {"action_type": "push_vlan", "tag_type": "c"} | 
                                
                                                            
                                    | 797 | 
                                     | 
                                                flow_mod["actions"].insert(0, new_action)  | 
                                
                                                            
                                    | 798 | 
                                     | 
                                            new_action = {"action_type": "pop_vlan"} | 
                                
                                                            
                                    | 799 | 
                                     | 
                                            flow_mod["actions"].insert(0, new_action)  | 
                                
                                                            
                                    | 800 | 
                                     | 
                                            return flow_mod  | 
                                
                                                            
                                    | 801 | 
                                     | 
                                     |