├── .gitignore ├── CHANGELOG.txt ├── INSTALL ├── LICENSE ├── README.md ├── _config.yml ├── install_ovstoolbox.sh ├── misc └── videotutorial2 │ ├── cloud_start.sh │ └── install_ovs_docker_plotnetcfg.sh ├── ovs-toolbox.py ├── ovs-toolbox.py.sha512sum ├── src ├── UI │ ├── about.ui │ ├── dockerif_dialog.ui │ ├── dockernet_dialog.ui │ ├── if_dialog.ui │ ├── iso_dialog.ui │ ├── iterate_dialog.ui │ ├── kvm_virt_disk_dialog.ui │ ├── kvm_virt_net_dialog.ui │ ├── mgmt_dialog.ui │ ├── misc_dialog.ui │ ├── of_delete_dialog.ui │ ├── of_dialog.ui │ ├── of_group.ui │ ├── of_trace.ui │ ├── output.ui │ ├── ovs-toolbox.ui │ ├── packet_loader.ui │ ├── pg_dialog.ui │ ├── port_dock.ui │ ├── pt_dialog.ui │ ├── qos_qos_dialog.ui │ ├── qos_queue_dialog.ui │ ├── qos_queue_link.ui │ ├── splash_dialog.ui │ └── stats_dialog.ui ├── democfg │ ├── _DEMO_asa_01.txt │ ├── _DEMO_docker_run_params_01.txt │ ├── _DEMO_dockerfile_alpine01.txt │ ├── _DEMO_dockerfile_fedora_01.txt │ ├── _DEMO_eth0_ipv4_and_eth1_ipv6.txt │ └── _DEMO_net_eth0_10.0.0.0.txt ├── footer.py ├── generate.py ├── header.py ├── images │ ├── alert-triangle.png │ ├── align-justify.png │ ├── anchor.png │ ├── bar-chart-2.png │ ├── book-open.png │ ├── check-square.png │ ├── check.png │ ├── checkbox-checked.png │ ├── checkbox-disabled.png │ ├── checkbox-unchecked.png │ ├── chevron-down.png │ ├── chevron-left.png │ ├── chevron-right.png │ ├── chevron-up.png │ ├── cloud-drizzle.png │ ├── compass.png │ ├── copy.png │ ├── crosshair.png │ ├── crosshair_remove.png │ ├── delete.png │ ├── disc.png │ ├── download.png │ ├── edit.png │ ├── eye.png │ ├── filter.png │ ├── hash.png │ ├── int_state.png │ ├── layers.png │ ├── layers_net.png │ ├── link.png │ ├── list.png │ ├── menu.png │ ├── minus.png │ ├── monitor.png │ ├── move.png │ ├── play-circle.png │ ├── plus-square.png │ ├── plus.png │ ├── radiobutton-checked.png │ ├── radiobutton-unchecked.png │ ├── refresh-cw.png │ ├── save.png │ ├── search.png │ ├── splashscreen.jpg │ ├── square.png │ ├── square32-alpha.png │ ├── stop-circle.png │ ├── trash-2.png │ ├── trash.png │ ├── trending-down.png │ ├── truck.png │ ├── unlink.png │ ├── upload.png │ ├── user-check.png │ ├── user-x.png │ ├── user2.png │ └── wind.png ├── project_ressource.qrc ├── stylesheets │ ├── 01.qss │ ├── 02.qss │ ├── 02.qss.back │ └── 03.qss ├── tmp │ └── readme.txt └── wiki │ ├── IPFIX.jpg │ ├── bondb1.jpg │ ├── bondb1verif.jpg │ ├── bondb2.jpg │ ├── bondcreate.jpg │ ├── bonddiag.jpg │ ├── bonddiagbroken.jpg │ ├── bonddiagbroken2.jpg │ ├── bonddiagbroken3.jpg │ ├── bonddisable1.jpg │ ├── bonddisable2.jpg │ ├── bonddisableplotnetcfg.jpg │ ├── bonddisableplotnetcfg2.jpg │ ├── bondping01.jpg │ ├── bondplotnetcfg.jpg │ ├── bondstatus.jpg │ ├── bondveth.jpg │ ├── bondveth2.jpg │ ├── comm01.jpg │ ├── comm01.xcf │ ├── comm02.jpg │ ├── comm03.jpg │ ├── comm04.jpg │ ├── comm05.jpg │ ├── comm06.jpg │ ├── comm07.jpg │ ├── cust_comm_prof_01.jpg │ ├── deletebond.jpg │ ├── deletevethpairs.jpg │ ├── deletingqos.jpg │ ├── deletingqos2.jpg │ ├── deletingqueue.jpg │ ├── delport.jpg │ ├── diagqos.jpg │ ├── dockerfile01.png │ ├── dockerfile02.png │ ├── dockerfile03.png │ ├── dockerimage.jpg │ ├── dockerinspect01.jpg │ ├── dockerinspect02.jpg │ ├── dockernet01.jpg │ ├── dockernet02.jpg │ ├── dockernet03.jpg │ ├── dockernet04.jpg │ ├── dockernetiter01.jpg │ ├── dockernetiter02.jpg │ ├── dockernetiter03.jpg │ ├── dockernetiter04.jpg │ ├── dockernetiter05.jpg │ ├── dockernetiter06.jpg │ ├── dockernetmulti01.jpg │ ├── dockernetmulti02.jpg │ ├── dockernetmulti03.jpg │ ├── dockernetmulti04.jpg │ ├── dockernetverif01.jpg │ ├── dockernetverif02.jpg │ ├── dockernetverif03.jpg │ ├── dockerrm.jpg │ ├── dockerrun01.jpg │ ├── dockerrun02.jpg │ ├── dummyport.jpg │ ├── dummyport02.jpg │ ├── dummyport03.jpg │ ├── eye.jpg │ ├── gre01.jpg │ ├── gre02.jpg │ ├── header.jpg │ ├── header2.jpg │ ├── ifstats01.jpg │ ├── ifstats02.jpg │ ├── ifstatus.jpg │ ├── ingresspolicing.jpg │ ├── iperf01.jpg │ ├── iperf02.jpg │ ├── iperf03.jpg │ ├── iterc.jpg │ ├── itern.jpg │ ├── kvm01.jpg │ ├── kvmdisk.jpg │ ├── kvmnet.jpg │ ├── kvmrun01.jpg │ ├── kvmrun02.jpg │ ├── kvmrun03.jpg │ ├── kvmrunplotnetcfg.jpg │ ├── link.jpg │ ├── list1.jpg │ ├── list2.jpg │ ├── list3.jpg │ ├── magnifier.jpg │ ├── mcastconfig.jpg │ ├── mcastiperf01.jpg │ ├── mcastiperf02.jpg │ ├── mcastmdb.jpg │ ├── mcastperport.jpg │ ├── mcaststats01.jpg │ ├── mcaststats02.jpg │ ├── mcaststats03.jpg │ ├── mcastwireshark.jpg │ ├── multicastnetwork.jpg │ ├── netflow.jpg │ ├── noshut.jpg │ ├── ntop.jpg │ ├── ntop02.jpg │ ├── ntop03.jpg │ ├── ntop04.jpg │ ├── overview.jpg │ ├── ovs-toolbox_console.png │ ├── ovsselector.jpg │ ├── plotnetcfg.jpg │ ├── plus.jpg │ ├── plusbox.jpg │ ├── port01.jpg │ ├── port02.jpg │ ├── port03.jpg │ ├── portdisable.jpg │ ├── portmirroring.jpg │ ├── qos01.jpg │ ├── qos02.jpg │ ├── qos03.jpg │ ├── qosegress01.jpg │ ├── qosegress02.jpg │ ├── qosmap01.jpg │ ├── qosmap02.jpg │ ├── qosmap03.jpg │ ├── qosmap04.jpg │ ├── qosmap05.jpg │ ├── qosof01.jpg │ ├── qosof02.jpg │ ├── qosofedit01.jpg │ ├── qosout01.jpg │ ├── queue01.jpg │ ├── queue02.jpg │ ├── sflow.jpg │ ├── shut.jpg │ ├── trash.jpg │ ├── trash2.jpg │ ├── unlinkingqos.jpg │ ├── unlinkingqos2.jpg │ ├── unlinkingqueue.jpg │ ├── unlinkingqueue2.jpg │ ├── validate.jpg │ ├── vethping.jpg │ ├── vethplotnetcfg.jpg │ ├── vlanmirroring.jpg │ ├── wireshark01.jpg │ └── wireshark02.jpg └── test ├── README.txt ├── hello_world01.py └── hello_world02.py /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | .ropeproject/ 3 | src/tmp/*.py 4 | *~ 5 | 6 | -------------------------------------------------------------------------------- /CHANGELOG.txt: -------------------------------------------------------------------------------- 1 | 1.0.9 Adding hidden commands feature in output ui to enable or 2 | disable display of too verbose and to frequent commands 3 | 4 | 1.0.8 Minor corrections for KVM tab 5 | docker ip iteration corrected to replace .0\d with .\1 in ip 6 | 7 | 1.0.7 Docker start added 8 | @staticmethod added 9 | docker ip iteration corrected to replace .0 with . in ip 10 | refresh port at end only when deleting multiple ports 11 | 12 | 1.0.6 ovs-toolbox now only update fields that have been changed. 13 | Don't refresh vlan,if,etc.. when _HOST is selected 14 | 15 | 1.0.1 initial release 16 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | INSTALLATION 2 | 3 | 4 | 0) Prerequisites: 5 | 6 | ovs-toolbox is a python3 software with a Qt5 interface. 7 | It depends on: 8 | - python3 9 | - python3-Qt5 10 | - lxml 11 | - paramiko 12 | - plotnetcfg 13 | - Graphviz 14 | 15 | 16 | 1) INSTALLATION ON FEDORA Linux 17 | 18 | 1.1) Install all dependencies 19 | 20 | dnf install python3 python3-Qt5 plotnetcfg graphviz 21 | pip3 install lxml 22 | pip3 install paramiko 23 | 24 | 25 | 1.2) Download ovs_toolbox 26 | 27 | git clone https://github.com/nbonnand/ovs-toolbox.git 28 | 29 | 1.3) ovs-toolbox.py is an all-in-one single file software, you can basically install it where you want, however a good place is in /usr/local/bin. 30 | 31 | cd ovs_toolbox/ 32 | ./install_ovstoolbox.sh 33 | 34 | 35 | 36 | 37 | 1.4) Run it ! 38 | 39 | ovs-toolbox.py 40 | 41 | 42 | 43 | 2) Installation on WINDOWS 44 | 45 | 46 | 2.0) IMPORTANT NOTICE: ovs-toolbox will work with known limitations 47 | 48 | ovs-toolbox sofware was develop under and for linux platform. I am not familiar of Windows. 49 | Despite I have tried to avoid linux python specific features in the code as much as I could, some features will not be working on windows platform. 50 | 51 | 2.1) Install Python3 52 | 53 | Download it from https://www.python.org/downloads/windows/ and follow instructions 54 | 55 | 2.2) Install PyQt5 56 | Follow instructions from: https://riverbankcomputing.com/software/pyqt/download5 57 | 58 | 2.3) Install paramiko and lxml 59 | 60 | pip3 install lxml 61 | pip3 install paramiko 62 | 63 | 2.4) Run it ! 64 | 65 | From a terminal launch the following command: 66 | ovs-toolbox.py 67 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2018 Nicolas Bonnand 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![header](https://github.com/nbonnand/ovs-toolbox/blob/master/src/wiki/header.jpg) 2 | 3 | # ovs-toolbox 4 | ovs-toolbox.py is a graphical user interface for Open vSwitch (OvS). 5 | 6 | ![header](https://github.com/nbonnand/ovs-toolbox/blob/master/src/wiki/header2.jpg) 7 | 8 | OvS bridges managed by this GUI, do not necessarily need to be local to your host. 9 | (They can be located on AWS, GCP, etc.. and managed remotely by this GUI via ssh/paramiko/sudo ) 10 | 11 | In addition, this GUI will help you with docker and KVM ecosystems (for simple tasks like connecting containers and VMs to OvS). 12 | 13 | OvS related settings that you can manage with this GUI: 14 | - bridge creation 15 | - port/interface creation ( vlan, interface types, etc..) 16 | - port statistics 17 | - ingress policy 18 | - mirroring 19 | - bonding 20 | - RSTP, STP 21 | - multicast 22 | - flows (netflow,sflow,ipfix) 23 | - queues and QOS 24 | - OpenFlow flows 25 | - OpenFlow groups 26 | - various OvS databases (controller, manager, Open_vSwitch, ssl ) 27 | 28 | Docker related settings that you can manage with this GUI: 29 | - docker files creation 30 | - docker image creation, docker image build 31 | - docker run, stop and rm 32 | - docker inspect 33 | - docker containers network parameters and automatic connection to selected OvS through one or multiple network interfaces. 34 | 35 | KVM related things you can do with this GUI: 36 | - virt-install settings 37 | - KVM network parameters and automatic connection to selected OvS 38 | 39 | iproute related things you can do with this GUI: 40 | - interface creation (dummy, tap, tun, veth pair ) 41 | - MTU setting 42 | - ip address setting 43 | 44 | Plotnetcfg 45 | - live image of network diagram generated thanks to [Plotnetcfg](https://github.com/jbenc/plotnetcfg) and [Graphviz](https://www.graphviz.org/) 46 | 47 | For documentation, read [ovs-toolbox wiki](https://github.com/nbonnand/ovs-toolbox/wiki) 48 | 49 | --- 50 | 51 | © 2018 Nicolas Bonnand, Licensed under the Apache License, Version 2.0 52 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /install_ovstoolbox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo 'Installing ovs-toolbox.py in /usr/local/bin' 4 | install -m 555 ovs-toolbox.py /usr/local/bin 5 | -------------------------------------------------------------------------------- /misc/videotutorial2/cloud_start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Nicolas Bonnand, 2018 4 | 5 | # AWS security groups creation 6 | 7 | tput setaf 6;echo 'Creating AWS security group dublin-demo-sg for region eu-west-1';tput setaf 7 8 | aws ec2 --region eu-west-1 create-security-group --group-name dublin-demo-sg --description "Dublin demo sg" 9 | 10 | tput setaf 6;echo 'Creating AWS security group paris-demo-sg for region eu-west-3';tput setaf 7 11 | aws ec2 --region eu-west-3 create-security-group --group-name paris-demo-sg --description "Paris demo sg" 12 | 13 | 14 | tput setaf 6;echo 'Adding ssh admin access in AWS dublin-demo-sg';tput setaf 7 15 | aws ec2 --region eu-west-1 authorize-security-group-ingress --group-name dublin-demo-sg --ip-permissions '[{"ToPort": 22, "IpProtocol": "tcp", "FromPort":22, "IpRanges": [{"CidrIp":"0.0.0.0/0", "Description": "ssh admin"}]}]' 16 | 17 | tput setaf 6;echo 'Adding ssh admin access in AWS paris-demo-sg';tput setaf 7 18 | aws ec2 --region eu-west-3 authorize-security-group-ingress --group-name paris-demo-sg --ip-permissions '[{"ToPort": 22, "IpProtocol": "tcp", "FromPort":22, "IpRanges": [{"CidrIp":"0.0.0.0/0", "Description": "ssh admin"}]}]' 19 | 20 | 21 | 22 | #AWS DUBLIN 23 | tput setaf 6;echo 'Creating AWS instance dublinvm in region eu-west-1';tput setaf 7 24 | aws ec2 --region eu-west-1 run-instances --image-id ami-0773391ae604c49a4 --instance-type t2.micro --count 1 --key-name aws-dublin-keys --security-groups dublin-demo-sg --user-data file://install_ovs_docker_plotnetcfg.sh --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=dublinvm}]' 25 | 26 | #AWS PARIS 27 | tput setaf 6;echo 'Creating AWS instance parisvm in region eu-west-3';tput setaf 7 28 | aws ec2 --region eu-west-3 run-instances --image-id ami-075b44448d2276521 --instance-type t2.micro --count 1 --key-name aws-paris-keys --security-groups paris-demo-sg --user-data file://install_ovs_docker_plotnetcfg.sh --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=parisvm}]' 29 | 30 | 31 | # GCP Frankfurt 32 | tput setaf 6;echo 'Creating GCP instance frankfurtvm in region europe-west3-b';tput setaf 7 33 | gcloud compute instances create frankfurtvm --zone europe-west3-b --machine-type n1-standard-1 --description "FRANKFURT VM" --image-project ubuntu-os-cloud --image-family ubuntu-minimal-1604-lts --tags=ovsdemo01 --metadata-from-file startup-script=install_ovs_docker_plotnetcfg.sh 34 | 35 | # GCP London 36 | tput setaf 6;echo 'Creating GCP instance londonvm in region europe-west3-b';tput setaf 7 37 | gcloud compute instances create londonvm --zone europe-west2-b --machine-type n1-standard-1 --description "LONDON VM" --image-project ubuntu-os-cloud --image-family ubuntu-minimal-1604-lts --tags=ovsdemo02 --metadata-from-file startup-script=install_ovs_docker_plotnetcfg.sh 38 | 39 | 40 | 41 | tput setaf 6;echo "Querying dublinvm public ip";tput setaf 7 42 | DUBLINVMIP=$(aws ec2 --region eu-west-1 describe-instances --query 'Reservations[].Instances[].PublicIpAddress' --filters "Name=tag:Name,Values=dublinvm" --output text) 43 | tput setaf 6;echo "Querying dublinvm private ip";tput setaf 7 44 | DUBLINVMPRIVIP=$(aws ec2 --region eu-west-1 describe-instances --query 'Reservations[].Instances[].PrivateIpAddress' --filters "Name=tag:Name,Values=dublinvm" --output text) 45 | 46 | 47 | tput setaf 6;echo "Querying parisvm public ip";tput setaf 7 48 | PARISVMIP=$(aws ec2 --region eu-west-3 describe-instances --query 'Reservations[].Instances[].PublicIpAddress' --filters "Name=tag:Name,Values=parisvm" --output text) 49 | tput setaf 6;echo "Querying parisvm private ip";tput setaf 7 50 | PARISVMPRIVIP=$(aws ec2 --region eu-west-3 describe-instances --query 'Reservations[].Instances[].PrivateIpAddress' --filters "Name=tag:Name,Values=parisvm" --output text) 51 | 52 | 53 | tput setaf 6;echo "Querying frankfurtvm public ip";tput setaf 7 54 | FRANKFURTVMIP=$(gcloud compute instances describe frankfurtvm --zone europe-west3-b --format='value(networkInterfaces[0].accessConfigs.natIP)') 55 | tput setaf 6;echo "Querying frankfurtvm private ip";tput setaf 7 56 | FRANKFURTVMPRIVIP=$(gcloud compute instances describe frankfurtvm --zone europe-west3-b --format='value(networkInterfaces[0].networkIP)') 57 | 58 | tput setaf 6;echo "Querying londonvm public ip";tput setaf 7 59 | LONDONVMIP=$(gcloud compute instances describe londonvm --zone europe-west2-b --format='value(networkInterfaces[0].accessConfigs.natIP)') 60 | tput setaf 6;echo "Querying londonvm private ip";tput setaf 7 61 | LONDONVMPRIVIP=$(gcloud compute instances describe londonvm --zone europe-west2-b --format='value(networkInterfaces[0].networkIP)') 62 | 63 | 64 | 65 | tput setaf 6;echo 'Allowing ingress GRE in AWS dublin-demo-sg from parisvm';tput setaf 7 66 | aws ec2 --region eu-west-1 authorize-security-group-ingress --group-name dublin-demo-sg --ip-permissions '[{"IpProtocol": "47", "IpRanges": [{"CidrIp":"'$PARISVMIP'/32", "Description": "GRE tunnel with LONDON"}]}]' 67 | 68 | tput setaf 6;echo 'Allowing ingress GRE in AWS paris-demo-sg from dublinvm';tput setaf 7 69 | aws ec2 --region eu-west-3 authorize-security-group-ingress --group-name paris-demo-sg --ip-permissions '[{"IpProtocol": "47", "IpRanges": [{"CidrIp":"'$DUBLINVMIP'/32", "Description": "GRE tunnel with DUBLIN"}]}]' 70 | 71 | 72 | tput setaf 6;echo 'Allowing ingress Geneve in AWS paris-demo-sg from frankfurtvm';tput setaf 7 73 | aws ec2 --region eu-west-3 authorize-security-group-ingress --group-name paris-demo-sg --ip-permissions '[{"ToPort": 6081, "IpProtocol": "udp", "FromPort":6081, "IpRanges": [{"CidrIp":"'$FRANKFURTVMIP'/32", "Description": "geneve tunnel with Frankfurt GCP"}]}]' 74 | 75 | tput setaf 6;echo 'Allowing ingress Geneve in GCP firewall from parisvm';tput setaf 7 76 | gcloud compute firewall-rules create genevetunneldemo --allow udp:6081 --direction=INGRESS --source-ranges=$PARISVMIP/32 --target-tags=ovsdemo01 --description='geneve tunnel with Paris' 77 | 78 | tput setaf 6;echo 'Allowing ingress VXLAN in GCP firewall from londonvm';tput setaf 7 79 | gcloud compute firewall-rules create vxlantunneldemo01 --allow udp:4789 --direction=INGRESS --source-ranges=$LONDONVMIP/32 --target-tags=ovsdemo01 --description='vxlan tunnel with London' 80 | 81 | tput setaf 6;echo 'Allowing ingress VXLAN in GCP firewall from frankfurtvm';tput setaf 7 82 | gcloud compute firewall-rules create vxlantunneldemo02 --allow udp:4789 --direction=INGRESS --source-ranges=$FRANKFURTVMIP/32 --target-tags=ovsdemo02 --description='vxlan tunnel with Frankfurt' 83 | 84 | 85 | echo 86 | tput setaf 6;echo 'Cloud setup complete' 87 | echo 88 | 89 | echo 'VM PRIV IP PUB IP' 90 | echo '------------------------------------------------' 91 | echo "DUBLIN $DUBLINVMPRIVIP $DUBLINVMIP" 92 | echo "PARIS $PARISVMPRIVIP $PARISVMIP" 93 | echo "FRANKFURT $FRANKFURTVMPRIVIP $FRANKFURTVMIP" 94 | echo "LONDON $LONDONVMPRIVIP $LONDONVMIP" 95 | tput setaf 7 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /misc/videotutorial2/install_ovs_docker_plotnetcfg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #Nicolas Bonnand, 2018 4 | 5 | apt-get install -y software-properties-common apt-transport-https > /tmp/startup_script_log 2>&1 6 | 7 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - >> /tmp/startup_script_log 2>&1 8 | 9 | add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" >> /tmp/startup_script_log 2>&1 10 | 11 | apt-get update >> /tmp/startup_script_log 2>&1 12 | 13 | apt-get install -y docker-ce openvswitch-switch plotnetcfg >> /tmp/startup_script_log 2>&1 14 | 15 | -------------------------------------------------------------------------------- /ovs-toolbox.py.sha512sum: -------------------------------------------------------------------------------- 1 | 919705115231ab6738b0859885e82f16926d9ba16993c26a988d2a781690df7c17fe8980437e4b564d1121e47617cfc8054aaa9e619897ac8f1a814c1403a4d5 ../ovs-toolbox.py 2 | -------------------------------------------------------------------------------- /src/UI/about.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | about_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 703 10 | 659 11 | 12 | 13 | 14 | About 15 | 16 | 17 | true 18 | 19 | 20 | 21 | 5 22 | 23 | 24 | 10 25 | 26 | 27 | 10 28 | 29 | 30 | 10 31 | 32 | 33 | 5 34 | 35 | 36 | 37 | 38 | true 39 | 40 | 41 | 42 | 43 | 44 | 45 | Qt::Horizontal 46 | 47 | 48 | QDialogButtonBox::Ok 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | buttonBox 58 | accepted() 59 | about_Dialog 60 | accept() 61 | 62 | 63 | 248 64 | 254 65 | 66 | 67 | 157 68 | 274 69 | 70 | 71 | 72 | 73 | buttonBox 74 | rejected() 75 | about_Dialog 76 | reject() 77 | 78 | 79 | 316 80 | 260 81 | 82 | 83 | 286 84 | 274 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /src/UI/dockerif_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | dockerif_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 452 10 | 249 11 | 12 | 13 | 14 | Docker interface editor 15 | 16 | 17 | 18 | 19 | 20 | QFrame::StyledPanel 21 | 22 | 23 | QFrame::Raised 24 | 25 | 26 | true 27 | 28 | 29 | 30 | 31 | 32 | container interface 33 | 34 | 35 | 36 | 37 | 38 | 39 | true 40 | 41 | 42 | true 43 | 44 | 45 | 46 | 47 | 48 | 49 | ovs port 50 | 51 | 52 | 53 | 54 | 55 | 56 | Qt::Vertical 57 | 58 | 59 | 60 | 20 61 | 40 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | ovs vlan 70 | 71 | 72 | 73 | 74 | 75 | 76 | true 77 | 78 | 79 | true 80 | 81 | 82 | 83 | 84 | 85 | 86 | true 87 | 88 | 89 | true 90 | 91 | 92 | 93 | 94 | 95 | 96 | mac 97 | 98 | 99 | 100 | 101 | 102 | 103 | true 104 | 105 | 106 | true 107 | 108 | 109 | 110 | 111 | 112 | 113 | ovs ofport: 114 | 115 | 116 | 117 | 118 | 119 | 120 | true 121 | 122 | 123 | true 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | Qt::Horizontal 134 | 135 | 136 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | buttonBox 146 | accepted() 147 | dockerif_Dialog 148 | accept() 149 | 150 | 151 | 248 152 | 254 153 | 154 | 155 | 157 156 | 274 157 | 158 | 159 | 160 | 161 | buttonBox 162 | rejected() 163 | dockerif_Dialog 164 | reject() 165 | 166 | 167 | 316 168 | 260 169 | 170 | 171 | 286 172 | 274 173 | 174 | 175 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /src/UI/dockernet_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | dockernet_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 439 10 | 218 11 | 12 | 13 | 14 | Docker net editor 15 | 16 | 17 | 18 | 19 | 20 | QFrame::StyledPanel 21 | 22 | 23 | QFrame::Raised 24 | 25 | 26 | true 27 | 28 | 29 | 30 | 31 | 32 | gateway: 33 | 34 | 35 | 36 | 37 | 38 | 39 | true 40 | 41 | 42 | true 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | addr 56 | 57 | 58 | 59 | 60 | route 61 | 62 | 63 | 64 | 65 | default route 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | true 74 | 75 | 76 | true 77 | 78 | 79 | 80 | 81 | 82 | 83 | ip/mask: 84 | 85 | 86 | 87 | 88 | 89 | 90 | network/mask: 91 | 92 | 93 | 94 | 95 | 96 | 97 | true 98 | 99 | 100 | true 101 | 102 | 103 | 104 | 105 | 106 | 107 | type: 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | Qt::Vertical 118 | 119 | 120 | 121 | 20 122 | 40 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | Qt::Horizontal 131 | 132 | 133 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | buttonBox 143 | accepted() 144 | dockernet_Dialog 145 | accept() 146 | 147 | 148 | 248 149 | 254 150 | 151 | 152 | 157 153 | 274 154 | 155 | 156 | 157 | 158 | buttonBox 159 | rejected() 160 | dockernet_Dialog 161 | reject() 162 | 163 | 164 | 316 165 | 260 166 | 167 | 168 | 286 169 | 274 170 | 171 | 172 | 173 | 174 | 175 | -------------------------------------------------------------------------------- /src/UI/iso_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | iso_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 440 10 | 146 11 | 12 | 13 | 14 | ISO file generator 15 | 16 | 17 | 18 | 19 | 20 | QFrame::StyledPanel 21 | 22 | 23 | QFrame::Raised 24 | 25 | 26 | true 27 | 28 | 29 | 30 | 31 | 32 | true 33 | 34 | 35 | 2 digit number example: 11 36 | 37 | 38 | true 39 | 40 | 41 | 42 | 43 | 44 | 45 | Source directory: 46 | 47 | 48 | 49 | 50 | 51 | 52 | destination iso file: 53 | 54 | 55 | 56 | 57 | 58 | 59 | true 60 | 61 | 62 | 2 digit number example: 05 63 | 64 | 65 | true 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | Qt::Vertical 76 | 77 | 78 | 79 | 20 80 | 10 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | Qt::Horizontal 89 | 90 | 91 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | buttonBox 101 | accepted() 102 | iso_Dialog 103 | accept() 104 | 105 | 106 | 248 107 | 254 108 | 109 | 110 | 157 111 | 274 112 | 113 | 114 | 115 | 116 | buttonBox 117 | rejected() 118 | iso_Dialog 119 | reject() 120 | 121 | 122 | 316 123 | 260 124 | 125 | 126 | 286 127 | 274 128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /src/UI/iterate_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | iterate_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 317 10 | 258 11 | 12 | 13 | 14 | Docker Iteration 15 | 16 | 17 | 18 | 19 | 20 | QFrame::StyledPanel 21 | 22 | 23 | QFrame::Raised 24 | 25 | 26 | true 27 | 28 | 29 | 30 | 31 | 32 | 33 | 0 34 | 0 35 | 36 | 37 | 38 | from: 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 0 47 | 0 48 | 49 | 50 | 51 | replace: 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 0 60 | 0 61 | 62 | 63 | 64 | to: 65 | 66 | 67 | 68 | 69 | 70 | 71 | Qt::Vertical 72 | 73 | 74 | 75 | 20 76 | 10 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | true 85 | 86 | 87 | 2 digit number example: 05 88 | 89 | 90 | true 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 0 99 | 0 100 | 101 | 102 | 103 | Iterate vm creation 104 | 105 | 106 | 107 | 108 | 109 | 110 | true 111 | 112 | 113 | 2 digit number example: 11 114 | 115 | 116 | true 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 0 125 | 0 126 | 127 | 128 | 129 | Iteration method aka "how to find what substring to replace" 130 | 131 | 132 | 133 | $$ anywhere 134 | 135 | 136 | 137 | 138 | last 2 digits 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 0 148 | 0 149 | 150 | 151 | 152 | by: 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | Qt::Vertical 163 | 164 | 165 | 166 | 20 167 | 40 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | Qt::Horizontal 176 | 177 | 178 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | buttonBox 188 | accepted() 189 | iterate_Dialog 190 | accept() 191 | 192 | 193 | 248 194 | 254 195 | 196 | 197 | 157 198 | 274 199 | 200 | 201 | 202 | 203 | buttonBox 204 | rejected() 205 | iterate_Dialog 206 | reject() 207 | 208 | 209 | 316 210 | 260 211 | 212 | 213 | 286 214 | 274 215 | 216 | 217 | 218 | 219 | 220 | -------------------------------------------------------------------------------- /src/UI/kvm_virt_disk_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | vd_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 359 10 | 350 11 | 12 | 13 | 14 | virt disk wizard 15 | 16 | 17 | 18 | 19 | 20 | 21 | 0 22 | 0 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | 33 | 34 | 35 | Qt::Vertical 36 | 37 | 38 | 39 | 20 40 | 40 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | size: 49 | 50 | 51 | 52 | 53 | 54 | 55 | 10G 56 | 57 | 58 | true 59 | 60 | 61 | 62 | 63 | 64 | 65 | create_disk 66 | 67 | 68 | 69 | 70 | 71 | 72 | disk path: 73 | 74 | 75 | 76 | 77 | 78 | 79 | device: 80 | 81 | 82 | 83 | 84 | 85 | 86 | format: 87 | 88 | 89 | 90 | 91 | 92 | 93 | bus: 94 | 95 | 96 | 97 | 98 | 99 | 100 | cache: 101 | 102 | 103 | 104 | 105 | 106 | 107 | io: 108 | 109 | 110 | 111 | 112 | 113 | 114 | /home/images/example.qcow2 115 | 116 | 117 | true 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | qcow 131 | 132 | 133 | 134 | 135 | iso 136 | 137 | 138 | 139 | 140 | qcow2 141 | 142 | 143 | 144 | 145 | qed 146 | 147 | 148 | 149 | 150 | raw 151 | 152 | 153 | 154 | 155 | vmdk 156 | 157 | 158 | 159 | 160 | vpc 161 | 162 | 163 | 164 | 165 | vdi 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | ide 175 | 176 | 177 | 178 | 179 | sata 180 | 181 | 182 | 183 | 184 | scsi 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | none 204 | 205 | 206 | 207 | 208 | writethrough 209 | 210 | 211 | 212 | 213 | writeback 214 | 215 | 216 | 217 | 218 | directsync 219 | 220 | 221 | 222 | 223 | unsafe 224 | 225 | 226 | 227 | 228 | hypervisor default 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | native 243 | 244 | 245 | 246 | 247 | threads 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | Select device 257 | 258 | 259 | 260 | 261 | disk 262 | 263 | 264 | 265 | 266 | cdrom 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | Qt::Horizontal 278 | 279 | 280 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | buttonBox 290 | accepted() 291 | vd_Dialog 292 | accept() 293 | 294 | 295 | 248 296 | 254 297 | 298 | 299 | 157 300 | 274 301 | 302 | 303 | 304 | 305 | buttonBox 306 | rejected() 307 | vd_Dialog 308 | reject() 309 | 310 | 311 | 316 312 | 260 313 | 314 | 315 | 286 316 | 274 317 | 318 | 319 | 320 | 321 | 322 | -------------------------------------------------------------------------------- /src/UI/kvm_virt_net_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | vn_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 461 10 | 316 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | virt network wizzard 21 | 22 | 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | 33 | 34 | 35 | bridge: 36 | 37 | 38 | 39 | 40 | 41 | 42 | virtualport_type: 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | openvswitch 56 | 57 | 58 | 59 | 60 | 802.Qbg 61 | 62 | 63 | 64 | 65 | 802.Qbh 66 | 67 | 68 | 69 | 70 | midonet 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | target: 79 | 80 | 81 | 82 | 83 | 84 | 85 | Qt::Vertical 86 | 87 | 88 | 89 | 20 90 | 40 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | mode: 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | e1000 112 | 113 | 114 | 115 | 116 | rtl8139 117 | 118 | 119 | 120 | 121 | virtio 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | true 130 | 131 | 132 | 133 | 134 | 135 | 136 | network: 137 | 138 | 139 | 140 | 141 | 142 | 143 | true 144 | 145 | 146 | 147 | 148 | 149 | 150 | model: 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | Select mode 159 | 160 | 161 | 162 | 163 | openvswitch bridge 164 | 165 | 166 | 167 | 168 | linux bridge 169 | 170 | 171 | 172 | 173 | kvm network with portgroups 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | true 182 | 183 | 184 | 185 | 186 | 187 | 188 | browse 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | Qt::Horizontal 199 | 200 | 201 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | buttonBox 211 | accepted() 212 | vn_Dialog 213 | accept() 214 | 215 | 216 | 248 217 | 254 218 | 219 | 220 | 157 221 | 274 222 | 223 | 224 | 225 | 226 | buttonBox 227 | rejected() 228 | vn_Dialog 229 | reject() 230 | 231 | 232 | 316 233 | 260 234 | 235 | 236 | 286 237 | 274 238 | 239 | 240 | 241 | 242 | 243 | -------------------------------------------------------------------------------- /src/UI/misc_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | misc_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 647 10 | 236 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Virt options wizzard 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | QFrame::StyledPanel 39 | 40 | 41 | QFrame::Raised 42 | 43 | 44 | 45 | 46 | 47 | true 48 | 49 | 50 | 51 | 52 | 0 53 | 0 54 | 521 55 | 170 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Value 65 | 66 | 67 | 68 | 69 | 70 | 71 | Name 72 | 73 | 74 | 75 | 76 | 77 | 78 | Description 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | Qt::Vertical 92 | 93 | 94 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 0 106 | 0 107 | 108 | 109 | 110 | Select options you want to add. You can fill their value now or later. 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | buttonBox 120 | accepted() 121 | misc_Dialog 122 | accept() 123 | 124 | 125 | 248 126 | 254 127 | 128 | 129 | 157 130 | 274 131 | 132 | 133 | 134 | 135 | buttonBox 136 | rejected() 137 | misc_Dialog 138 | reject() 139 | 140 | 141 | 316 142 | 260 143 | 144 | 145 | 286 146 | 274 147 | 148 | 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /src/UI/of_delete_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | of_delete_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 346 10 | 226 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Delete flows wizzard 21 | 22 | 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | 33 | 34 | 35 | all flows 36 | 37 | 38 | 39 | 40 | 41 | 42 | Qt::Vertical 43 | 44 | 45 | 46 | 20 47 | 40 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | flows wi&th filter cookie 56 | 57 | 58 | 59 | 60 | 61 | 62 | flows with filter table 63 | 64 | 65 | 66 | 67 | 68 | 69 | Delete: 70 | 71 | 72 | 73 | 74 | 75 | 76 | flows with filter table AN&D filter cookie 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | Qt::Horizontal 87 | 88 | 89 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | buttonBox 99 | accepted() 100 | of_delete_Dialog 101 | accept() 102 | 103 | 104 | 248 105 | 254 106 | 107 | 108 | 157 109 | 274 110 | 111 | 112 | 113 | 114 | buttonBox 115 | rejected() 116 | of_delete_Dialog 117 | reject() 118 | 119 | 120 | 316 121 | 260 122 | 123 | 124 | 286 125 | 274 126 | 127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /src/UI/output.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | output_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 683 10 | 557 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Output 21 | 22 | 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | true 33 | 34 | 35 | 36 | 2 37 | 38 | 39 | 2 40 | 41 | 42 | 2 43 | 44 | 45 | 2 46 | 47 | 48 | 49 | 50 | 51 | 0 52 | 0 53 | 54 | 55 | 56 | Run command on selected host 57 | 58 | 59 | 60 | 61 | 62 | 63 | :/images/check.png:/images/check.png 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 0 72 | 0 73 | 74 | 75 | 76 | Run batch file on selected host 77 | 78 | 79 | 80 | 81 | 82 | 83 | :/images/check.png:/images/check.png 84 | 85 | 86 | 87 | 88 | 89 | 90 | true 91 | 92 | 93 | 94 | 0 95 | 0 96 | 97 | 98 | 99 | Select a batch file 100 | 101 | 102 | 103 | 104 | 105 | 106 | :/images/search.png:/images/search.png 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 0 115 | 0 116 | 117 | 118 | 119 | Send command: 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 0 128 | 0 129 | 130 | 131 | 132 | Command to send to remote host. 133 | Occurrences of pattern _SWITCHNAME_ will be replaced on the fly by selected profile switchname. 134 | 135 | 136 | -1 137 | 138 | 139 | false 140 | 141 | 142 | true 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 0 151 | 0 152 | 153 | 154 | 155 | local path of batchfile to send to remote host. 156 | (occurences of _SWITCHNAME_ inside file will be replaced on the fly by selected profile switchname.) 157 | 158 | 159 | -1 160 | 161 | 162 | false 163 | 164 | 165 | true 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 0 174 | 0 175 | 176 | 177 | 178 | Send batchfile: 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 0 187 | 0 188 | 189 | 190 | 191 | Host: 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 0 200 | 0 201 | 202 | 203 | 204 | ? 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | QFrame::StyledPanel 215 | 216 | 217 | QFrame::Raised 218 | 219 | 220 | true 221 | 222 | 223 | 224 | 225 | 226 | true 227 | 228 | 229 | Qt::ScrollBarAlwaysOn 230 | 231 | 232 | Qt::ScrollBarAlwaysOn 233 | 234 | 235 | QPlainTextEdit::NoWrap 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | QFrame::StyledPanel 246 | 247 | 248 | QFrame::Raised 249 | 250 | 251 | true 252 | 253 | 254 | 255 | 2 256 | 257 | 258 | 2 259 | 260 | 261 | 2 262 | 263 | 264 | 2 265 | 266 | 267 | 2 268 | 269 | 270 | 271 | 272 | Display: 273 | 274 | 275 | 276 | 277 | 278 | 279 | Display commands results 280 | 281 | 282 | results 283 | 284 | 285 | 286 | 287 | 288 | 289 | Display commands 290 | 291 | 292 | commands 293 | 294 | 295 | true 296 | 297 | 298 | 299 | 300 | 301 | 302 | Display commands 303 | 304 | 305 | hidden commands 306 | 307 | 308 | 309 | 310 | 311 | 312 | Display errors 313 | 314 | 315 | errors 316 | 317 | 318 | true 319 | 320 | 321 | 322 | 323 | 324 | 325 | Activate very very verbose debug mode 326 | 327 | 328 | debug 329 | 330 | 331 | 332 | 333 | 334 | 335 | Qt::Horizontal 336 | 337 | 338 | 339 | 40 340 | 20 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 0 350 | 0 351 | 352 | 353 | 354 | Save whiteboard to file 355 | 356 | 357 | 358 | 359 | 360 | 361 | :/images/save.png:/images/save.png 362 | 363 | 364 | 365 | 366 | 367 | 368 | Qt::Horizontal 369 | 370 | 371 | 372 | 40 373 | 20 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 0 383 | 0 384 | 385 | 386 | 387 | Clear whiteboard 388 | 389 | 390 | 391 | 392 | 393 | 394 | :/images/trash.png:/images/trash.png 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | Qt::Horizontal 405 | 406 | 407 | QDialogButtonBox::Close 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | buttonBox 419 | accepted() 420 | output_Dialog 421 | accept() 422 | 423 | 424 | 248 425 | 254 426 | 427 | 428 | 157 429 | 274 430 | 431 | 432 | 433 | 434 | buttonBox 435 | rejected() 436 | output_Dialog 437 | reject() 438 | 439 | 440 | 316 441 | 260 442 | 443 | 444 | 286 445 | 274 446 | 447 | 448 | 449 | 450 | 451 | -------------------------------------------------------------------------------- /src/UI/packet_loader.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 502 10 | 190 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Load packet 21 | 22 | 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | true 33 | 34 | 35 | 36 | 37 | 38 | QFrame::StyledPanel 39 | 40 | 41 | QFrame::Raised 42 | 43 | 44 | true 45 | 46 | 47 | 48 | 2 49 | 50 | 51 | 2 52 | 53 | 54 | 2 55 | 56 | 57 | 2 58 | 59 | 60 | 61 | 62 | 63 | 0 64 | 0 65 | 66 | 67 | 68 | pcap 69 | 70 | 71 | true 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 0 80 | 0 81 | 82 | 83 | 84 | he&xa 85 | 86 | 87 | false 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 0 96 | 0 97 | 98 | 99 | 100 | tcpd&ump 101 | 102 | 103 | false 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | file format 114 | 115 | 116 | 117 | 118 | 119 | 120 | Qt::Vertical 121 | 122 | 123 | 124 | 20 125 | 40 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 0 135 | 0 136 | 137 | 138 | 139 | QFrame::StyledPanel 140 | 141 | 142 | QFrame::Raised 143 | 144 | 145 | true 146 | 147 | 148 | 149 | 2 150 | 151 | 152 | 2 153 | 154 | 155 | 2 156 | 157 | 158 | 2 159 | 160 | 161 | 162 | 163 | true 164 | 165 | 166 | 167 | 0 168 | 0 169 | 170 | 171 | 172 | ssh public key 173 | 174 | 175 | true 176 | 177 | 178 | 179 | 180 | 181 | 182 | true 183 | 184 | 185 | 186 | 0 187 | 0 188 | 189 | 190 | 191 | Select your private ssh key 192 | 193 | 194 | 195 | 196 | 197 | 198 | :/images/search.png:/images/search.png 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | source file: 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | Qt::Horizontal 219 | 220 | 221 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | buttonBox 233 | accepted() 234 | Dialog 235 | accept() 236 | 237 | 238 | 248 239 | 254 240 | 241 | 242 | 157 243 | 274 244 | 245 | 246 | 247 | 248 | buttonBox 249 | rejected() 250 | Dialog 251 | reject() 252 | 253 | 254 | 316 255 | 260 256 | 257 | 258 | 286 259 | 274 260 | 261 | 262 | 263 | 264 | 265 | -------------------------------------------------------------------------------- /src/UI/pg_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | pg_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 346 10 | 240 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Dialog 21 | 22 | 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | true 33 | 34 | 35 | 36 | 37 | 38 | Default: 39 | 40 | 41 | 42 | 43 | 44 | 45 | Portgroup: 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | vlan 54 | 55 | 56 | 57 | 58 | trunk 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | Mode: 67 | 68 | 69 | 70 | 71 | 72 | 73 | true 74 | 75 | 76 | 77 | 78 | 79 | 80 | Qt::Vertical 81 | 82 | 83 | 84 | 20 85 | 40 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | true 94 | 95 | 96 | 97 | 98 | 99 | 100 | Tags: 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | Qt::Horizontal 118 | 119 | 120 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | buttonBox 130 | accepted() 131 | pg_Dialog 132 | accept() 133 | 134 | 135 | 248 136 | 254 137 | 138 | 139 | 157 140 | 274 141 | 142 | 143 | 144 | 145 | buttonBox 146 | rejected() 147 | pg_Dialog 148 | reject() 149 | 150 | 151 | 316 152 | 260 153 | 154 | 155 | 286 156 | 274 157 | 158 | 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /src/UI/port_dock.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | port_dock_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Ports 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/UI/qos_qos_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | qqos_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 510 10 | 316 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | New QOS 21 | 22 | 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | true 33 | 34 | 35 | 36 | 37 | 38 | false 39 | 40 | 41 | true 42 | 43 | 44 | 45 | 46 | 47 | 48 | Qt::Vertical 49 | 50 | 51 | 52 | 20 53 | 40 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | false 62 | 63 | 64 | true 65 | 66 | 67 | 68 | 69 | 70 | 71 | cbs: 72 | 73 | 74 | 75 | 76 | 77 | 78 | false 79 | 80 | 81 | true 82 | 83 | 84 | 85 | 86 | 87 | 88 | false 89 | 90 | 91 | true 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | linux-htb 105 | 106 | 107 | 108 | 109 | linux-hfsc 110 | 111 | 112 | 113 | 114 | linux-sfq 115 | 116 | 117 | 118 | 119 | linux-codel 120 | 121 | 122 | 123 | 124 | linux-fq_codel 125 | 126 | 127 | 128 | 129 | linux-noop 130 | 131 | 132 | 133 | 134 | egress-policer 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | cir: 143 | 144 | 145 | 146 | 147 | 148 | 149 | max-rate: 150 | 151 | 152 | 153 | 154 | 155 | 156 | type: 157 | 158 | 159 | 160 | 161 | 162 | 163 | false 164 | 165 | 166 | true 167 | 168 | 169 | 170 | 171 | 172 | 173 | perturb: 174 | 175 | 176 | 177 | 178 | 179 | 180 | quantum: 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | Qt::Horizontal 191 | 192 | 193 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | buttonBox 203 | accepted() 204 | qqos_Dialog 205 | accept() 206 | 207 | 208 | 248 209 | 254 210 | 211 | 212 | 157 213 | 274 214 | 215 | 216 | 217 | 218 | buttonBox 219 | rejected() 220 | qqos_Dialog 221 | reject() 222 | 223 | 224 | 316 225 | 260 226 | 227 | 228 | 286 229 | 274 230 | 231 | 232 | 233 | 234 | 235 | -------------------------------------------------------------------------------- /src/UI/qos_queue_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | qqueue_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 465 10 | 282 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | New Queue 21 | 22 | 23 | 24 | 25 | 26 | QFrame::StyledPanel 27 | 28 | 29 | QFrame::Raised 30 | 31 | 32 | true 33 | 34 | 35 | 36 | 37 | 38 | true 39 | 40 | 41 | 42 | 43 | 44 | 45 | max-rate: 46 | 47 | 48 | 49 | 50 | 51 | 52 | priority: 53 | 54 | 55 | 56 | 57 | 58 | 59 | dscp: 60 | 61 | 62 | 63 | 64 | 65 | 66 | Qt::Vertical 67 | 68 | 69 | 70 | 20 71 | 40 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | true 80 | 81 | 82 | 83 | 84 | 85 | 86 | min-rate: 87 | 88 | 89 | 90 | 91 | 92 | 93 | burst: 94 | 95 | 96 | 97 | 98 | 99 | 100 | true 101 | 102 | 103 | 104 | 105 | 106 | 107 | true 108 | 109 | 110 | 111 | 112 | 113 | 114 | true 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | Qt::Horizontal 125 | 126 | 127 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | buttonBox 137 | accepted() 138 | qqueue_Dialog 139 | accept() 140 | 141 | 142 | 248 143 | 254 144 | 145 | 146 | 157 147 | 274 148 | 149 | 150 | 151 | 152 | buttonBox 153 | rejected() 154 | qqueue_Dialog 155 | reject() 156 | 157 | 158 | 316 159 | 260 160 | 161 | 162 | 286 163 | 274 164 | 165 | 166 | 167 | 168 | 169 | -------------------------------------------------------------------------------- /src/UI/qos_queue_link.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | qos_queue_link_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 402 10 | 200 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Add queue in QOS 21 | 22 | 23 | 24 | 2 25 | 26 | 27 | 2 28 | 29 | 30 | 2 31 | 32 | 33 | 2 34 | 35 | 36 | 37 | 38 | QFrame::StyledPanel 39 | 40 | 41 | QFrame::Raised 42 | 43 | 44 | true 45 | 46 | 47 | 48 | 49 | 50 | queue: 51 | 52 | 53 | 54 | 55 | 56 | 57 | true 58 | 59 | 60 | true 61 | 62 | 63 | 64 | 65 | 66 | 67 | qos: 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | 78 | 79 | 80 | 81 | true 82 | 83 | 84 | true 85 | 86 | 87 | 88 | 89 | 90 | 91 | Qt::Vertical 92 | 93 | 94 | 95 | 20 96 | 40 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | map id: 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | Qt::Horizontal 115 | 116 | 117 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | buttonBox 127 | accepted() 128 | qos_queue_link_Dialog 129 | accept() 130 | 131 | 132 | 248 133 | 254 134 | 135 | 136 | 157 137 | 274 138 | 139 | 140 | 141 | 142 | buttonBox 143 | rejected() 144 | qos_queue_link_Dialog 145 | reject() 146 | 147 | 148 | 316 149 | 260 150 | 151 | 152 | 286 153 | 274 154 | 155 | 156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /src/UI/splash_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | splash_Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 484 10 | 276 11 | 12 | 13 | 14 | OvS-ToolBox 15 | 16 | 17 | 18 | 0 19 | 20 | 21 | 0 22 | 23 | 24 | 0 25 | 26 | 27 | 0 28 | 29 | 30 | 31 | 32 | 33 | 0 34 | 0 35 | 36 | 37 | 38 | background: black; 39 | 40 | 41 | QFrame::StyledPanel 42 | 43 | 44 | QFrame::Raised 45 | 46 | 47 | 48 | 9 49 | 50 | 51 | 52 | 53 | 54 | 0 55 | 0 56 | 57 | 58 | 59 | color: rgb(200,200,240); background: black; 60 | 61 | 62 | label_release 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 0 71 | 0 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | myClickableLabel 90 | QLabel 91 |
myclickablelabel.h
92 |
93 |
94 | 95 | 96 |
97 | -------------------------------------------------------------------------------- /src/democfg/_DEMO_asa_01.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "disk": [ 4 | [ 5 | "/home/vm/asav01.qcow2", 6 | "qcow2", 7 | "disk", 8 | "ide", 9 | "none", 10 | "" 11 | ], 12 | [ 13 | "/home/vm/asav_day0-iso", 14 | "iso", 15 | "cdrom", 16 | "", 17 | "", 18 | "" 19 | ] 20 | ], 21 | "misc": [ 22 | [ 23 | "connect", 24 | "qemu:///system" 25 | ], 26 | [ 27 | "cpu", 28 | "host" 29 | ], 30 | [ 31 | "arch", 32 | "x86_64" 33 | ], 34 | [ 35 | "machine", 36 | "pc-1.0" 37 | ], 38 | [ 39 | "os-type", 40 | "linux" 41 | ], 42 | [ 43 | "os-variant", 44 | "generic" 45 | ], 46 | [ 47 | "noacpi", 48 | "" 49 | ], 50 | [ 51 | "virt-type", 52 | "kvm" 53 | ], 54 | [ 55 | "import", 56 | "" 57 | ], 58 | [ 59 | "console", 60 | "pty,target_type=virtio" 61 | ], 62 | [ 63 | "serial", 64 | "tcp,host=127.0.0.1:4554,mode=bind,protocol=telnet" 65 | ] 66 | ], 67 | "net": [ 68 | [ 69 | "mybr", 70 | "", 71 | "virtio", 72 | "openvswitch", 73 | "asav01-cons" 74 | ], 75 | [ 76 | "mybr", 77 | "", 78 | "virtio", 79 | "openvswitch", 80 | "asav01-0" 81 | ], 82 | [ 83 | "mybr", 84 | "", 85 | "virtio", 86 | "openvswitch", 87 | "asav01-1" 88 | ] 89 | ], 90 | "ram": "1024", 91 | "vcpu": "1" 92 | } 93 | ] 94 | -------------------------------------------------------------------------------- /src/democfg/_DEMO_docker_run_params_01.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "run_command": "/bin/bash", 4 | "run_options": "--privileged --net none -it -d" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /src/democfg/_DEMO_dockerfile_alpine01.txt: -------------------------------------------------------------------------------- 1 | FROM docker.io/alpine 2 | RUN apk update 3 | RUN apk add bash 4 | CMD ["/bin/sh"] 5 | -------------------------------------------------------------------------------- /src/democfg/_DEMO_dockerfile_fedora_01.txt: -------------------------------------------------------------------------------- 1 | FROM docker.io/fedora 2 | RUN dnf -y update iproute \ 3 | openssh-clients \ 4 | wget \ 5 | curl \ 6 | iputils \ 7 | traceroute \ 8 | iperf \ 9 | wireshark \ 10 | tcpdump \ 11 | procps-ng \ 12 | scapy \ 13 | lighttpd 14 | RUN dnf -y install iproute \ 15 | openssh-clients \ 16 | wget \ 17 | curl \ 18 | iputils \ 19 | traceroute \ 20 | iperf \ 21 | wireshark \ 22 | tcpdump \ 23 | procps-ng \ 24 | scapy \ 25 | net-tools \ 26 | lsof \ 27 | lighttpd \ 28 | udpcast 29 | RUN setcap cap_net_raw,cap_net_admin+p /usr/bin/ping 30 | #EXPOSE 80 31 | #EXPOSE 5001 32 | CMD ["/bin/bash"] 33 | -------------------------------------------------------------------------------- /src/democfg/_DEMO_eth0_ipv4_and_eth1_ipv6.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ifext": "P0_01", 4 | "ifint": "eth0", 5 | "mac": "aa:00:00:00:00:01", 6 | "of": "1000", 7 | "type": "intf", 8 | "vlan": "100" 9 | }, 10 | { 11 | "ip": "192.168.100.1/24", 12 | "net_type": "ad", 13 | "type": "net" 14 | }, 15 | { 16 | "gw": "192.168.100.254", 17 | "net": "default", 18 | "net_type": "rt", 19 | "type": "net" 20 | }, 21 | { 22 | "ifext": "P1_01", 23 | "ifint": "eth1", 24 | "mac": "aa:00:00:00:01:01", 25 | "of": "2000", 26 | "type": "intf", 27 | "vlan": "101" 28 | }, 29 | { 30 | "ip": " fdf3:b660:0a04:549a::1/64", 31 | "net_type": "ad", 32 | "type": "net" 33 | } 34 | ] 35 | -------------------------------------------------------------------------------- /src/democfg/_DEMO_net_eth0_10.0.0.0.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ifext": "P00", 4 | "ifint": "eth0", 5 | "mac": "aa:00:00:00:00:00", 6 | "of": "1000", 7 | "type": "intf", 8 | "vlan": "100" 9 | }, 10 | { 11 | "ip": "10.0.0.1/24", 12 | "net_type": "ad", 13 | "type": "net" 14 | }, 15 | { 16 | "gw": "10.0.0.254", 17 | "net": "default", 18 | "net_type": "rt", 19 | "type": "net" 20 | } 21 | ] 22 | -------------------------------------------------------------------------------- /src/generate.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | # git $Id$ 4 | 5 | from datetime import datetime 6 | import subprocess 7 | import re 8 | import sys 9 | 10 | 11 | #-------------------------- 12 | 13 | def loadfile(filename,whandler): 14 | print("reading: "+filename) 15 | with open(filename) as fh: 16 | line='enter loop' 17 | while line: 18 | line = fh.readline() 19 | if(not pattern_header.search(filename)): 20 | if(pattern.search(line)): 21 | continue 22 | if(pattern_import_01.search(line)): 23 | continue 24 | if(pattern_import_02.search(line)): 25 | continue 26 | 27 | whandler.write(line) 28 | if(pattern_header.search(filename)): 29 | whandler.write("\nbuildtime='{}'\nproject_release='{}'\n".format(buildtime,project_release)) 30 | 31 | #-------------------------- 32 | #--------- MAIN ----------- 33 | #-------------------------- 34 | print(len(sys.argv)) 35 | 36 | if(len(sys.argv)<2): 37 | print ('Error: please specify version number !!!') 38 | exit(0) 39 | 40 | project_release=str(sys.argv[1]) 41 | print ("project_release="+project_release) 42 | 43 | buildtime=datetime.now().isoformat(timespec='seconds') 44 | pattern=re.compile(r'import\sproject_ressource') 45 | pattern_import_01=re.compile(r'from\sPyQt5\simport') 46 | pattern_import_02=re.compile(r'from\smyclickablelabel') 47 | pattern_header=re.compile(r'header\.py') 48 | 49 | print("generating ressource file: tmp/project_ressource.py") 50 | subprocess.check_output(['pyrcc5','project_ressource.qrc','-o','tmp/project_ressource.py']) 51 | 52 | for uifile in ( 53 | 'about', 54 | 'dockerif_dialog', 55 | 'dockernet_dialog', 56 | 'if_dialog', 57 | 'iso_dialog', 58 | 'iterate_dialog', 59 | 'kvm_virt_disk_dialog', 60 | 'kvm_virt_net_dialog', 61 | 'mgmt_dialog', 62 | 'misc_dialog', 63 | 'of_delete_dialog', 64 | 'of_dialog', 65 | 'of_group', 66 | 'of_trace', 67 | 'output', 68 | 'pg_dialog', 69 | 'port_dock', 70 | 'pt_dialog', 71 | 'qos_qos_dialog', 72 | 'qos_queue_dialog', 73 | 'qos_queue_link', 74 | 'stats_dialog', 75 | 'splash_dialog', 76 | ): 77 | print("generating: tmp/{}.py".format(uifile)) 78 | subprocess.check_output(['pyuic5',"UI/{}.ui".format(uifile),'-o',"tmp/{}.py".format(uifile)]) 79 | 80 | print("generating tmp/ovs-toolbox-guionly.py") 81 | subprocess.check_output(["pyuic5","UI/ovs-toolbox.ui","-o","tmp/ovs-toolbox-guionly.py"]) 82 | 83 | #start_pdb() 84 | with open('../ovs-toolbox.py','w') as filename_whandler: 85 | for sourcefile in ('header.py', 86 | 'tmp/ovs-toolbox-guionly.py', 87 | 'tmp/if_dialog.py', 88 | 'tmp/pt_dialog.py', 89 | 'tmp/kvm_virt_net_dialog.py', 90 | 'tmp/kvm_virt_disk_dialog.py', 91 | 'tmp/misc_dialog.py', 92 | 'tmp/iso_dialog.py', 93 | 'tmp/pg_dialog.py', 94 | 'tmp/qos_queue_dialog.py', 95 | 'tmp/qos_qos_dialog.py', 96 | 'tmp/qos_queue_link.py', 97 | 'tmp/port_dock.py', 98 | 'tmp/of_dialog.py', 99 | 'tmp/of_delete_dialog.py', 100 | 'tmp/output.py', 101 | 'tmp/of_trace.py', 102 | 'tmp/of_group.py', 103 | 'tmp/mgmt_dialog.py', 104 | 'tmp/dockernet_dialog.py', 105 | 'tmp/dockerif_dialog.py', 106 | 'tmp/iterate_dialog.py', 107 | 'tmp/stats_dialog.py', 108 | 'tmp/about.py', 109 | 'tmp/splash_dialog.py', 110 | 'tmp/project_ressource.py', 111 | 'footer.py'): 112 | loadfile(sourcefile,filename_whandler) 113 | filename_whandler.close() 114 | print("\ngenerating: ovs-toolbox.py") 115 | 116 | subprocess.check_output(['chmod','700','../ovs-toolbox.py']) 117 | 118 | with open("../ovs-toolbox.py.sha512sum","w") as out: 119 | subprocess.run(['sha512sum','../ovs-toolbox.py'],stdout=out) 120 | -------------------------------------------------------------------------------- /src/header.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | #Copyright 2018 Nicolas Bonnand 4 | 5 | from PyQt5 import QtCore, QtGui, QtWidgets 6 | 7 | from PyQt5.QtWidgets import (QFileDialog,QInputDialog,QAbstractScrollArea,QAbstractItemView,QDockWidget,QCompleter,QItemDelegate,QHeaderView,QDesktopWidget,QTreeView,QSizePolicy,QTableView) 8 | from PyQt5.QtCore import (QTimer,QStringListModel,QSettings, QPoint, QSize, QVariant, QSortFilterProxyModel) 9 | from PyQt5.QtGui import (QStandardItemModel,QStandardItem,QPixmap,QPalette) 10 | from PyQt5.QtCore import QT_VERSION_STR 11 | from PyQt5.Qt import PYQT_VERSION_STR 12 | from sip import SIP_VERSION_STR 13 | from PyQt5.QtCore import pyqtRemoveInputHook 14 | 15 | import random 16 | import sys 17 | import time 18 | import os 19 | from os.path import expanduser 20 | from pathlib import Path 21 | from lxml import etree 22 | import subprocess 23 | import re 24 | import tempfile 25 | import inspect # for debugging 26 | import json 27 | import paramiko 28 | import socket 29 | import tarfile 30 | import io 31 | import platform 32 | 33 | #for debugging only ( remove it) 34 | from pprint import pprint 35 | from pdb import set_trace 36 | -------------------------------------------------------------------------------- /src/images/alert-triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/alert-triangle.png -------------------------------------------------------------------------------- /src/images/align-justify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/align-justify.png -------------------------------------------------------------------------------- /src/images/anchor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/anchor.png -------------------------------------------------------------------------------- /src/images/bar-chart-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/bar-chart-2.png -------------------------------------------------------------------------------- /src/images/book-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/book-open.png -------------------------------------------------------------------------------- /src/images/check-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/check-square.png -------------------------------------------------------------------------------- /src/images/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/check.png -------------------------------------------------------------------------------- /src/images/checkbox-checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/checkbox-checked.png -------------------------------------------------------------------------------- /src/images/checkbox-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/checkbox-disabled.png -------------------------------------------------------------------------------- /src/images/checkbox-unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/checkbox-unchecked.png -------------------------------------------------------------------------------- /src/images/chevron-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/chevron-down.png -------------------------------------------------------------------------------- /src/images/chevron-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/chevron-left.png -------------------------------------------------------------------------------- /src/images/chevron-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/chevron-right.png -------------------------------------------------------------------------------- /src/images/chevron-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/chevron-up.png -------------------------------------------------------------------------------- /src/images/cloud-drizzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/cloud-drizzle.png -------------------------------------------------------------------------------- /src/images/compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/compass.png -------------------------------------------------------------------------------- /src/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/copy.png -------------------------------------------------------------------------------- /src/images/crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/crosshair.png -------------------------------------------------------------------------------- /src/images/crosshair_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/crosshair_remove.png -------------------------------------------------------------------------------- /src/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/delete.png -------------------------------------------------------------------------------- /src/images/disc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/disc.png -------------------------------------------------------------------------------- /src/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/download.png -------------------------------------------------------------------------------- /src/images/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/edit.png -------------------------------------------------------------------------------- /src/images/eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/eye.png -------------------------------------------------------------------------------- /src/images/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/filter.png -------------------------------------------------------------------------------- /src/images/hash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/hash.png -------------------------------------------------------------------------------- /src/images/int_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/int_state.png -------------------------------------------------------------------------------- /src/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/layers.png -------------------------------------------------------------------------------- /src/images/layers_net.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/layers_net.png -------------------------------------------------------------------------------- /src/images/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/link.png -------------------------------------------------------------------------------- /src/images/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/list.png -------------------------------------------------------------------------------- /src/images/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/menu.png -------------------------------------------------------------------------------- /src/images/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/minus.png -------------------------------------------------------------------------------- /src/images/monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/monitor.png -------------------------------------------------------------------------------- /src/images/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/move.png -------------------------------------------------------------------------------- /src/images/play-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/play-circle.png -------------------------------------------------------------------------------- /src/images/plus-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/plus-square.png -------------------------------------------------------------------------------- /src/images/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/plus.png -------------------------------------------------------------------------------- /src/images/radiobutton-checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/radiobutton-checked.png -------------------------------------------------------------------------------- /src/images/radiobutton-unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/radiobutton-unchecked.png -------------------------------------------------------------------------------- /src/images/refresh-cw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/refresh-cw.png -------------------------------------------------------------------------------- /src/images/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/save.png -------------------------------------------------------------------------------- /src/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/search.png -------------------------------------------------------------------------------- /src/images/splashscreen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/splashscreen.jpg -------------------------------------------------------------------------------- /src/images/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/square.png -------------------------------------------------------------------------------- /src/images/square32-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/square32-alpha.png -------------------------------------------------------------------------------- /src/images/stop-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/stop-circle.png -------------------------------------------------------------------------------- /src/images/trash-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/trash-2.png -------------------------------------------------------------------------------- /src/images/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/trash.png -------------------------------------------------------------------------------- /src/images/trending-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/trending-down.png -------------------------------------------------------------------------------- /src/images/truck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/truck.png -------------------------------------------------------------------------------- /src/images/unlink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/unlink.png -------------------------------------------------------------------------------- /src/images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/upload.png -------------------------------------------------------------------------------- /src/images/user-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/user-check.png -------------------------------------------------------------------------------- /src/images/user-x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/user-x.png -------------------------------------------------------------------------------- /src/images/user2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/user2.png -------------------------------------------------------------------------------- /src/images/wind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/images/wind.png -------------------------------------------------------------------------------- /src/project_ressource.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | images/alert-triangle.png 4 | images/align-justify.png 5 | images/hash.png 6 | images/anchor.png 7 | images/book-open.png 8 | images/check-square.png 9 | images/check.png 10 | images/checkbox-checked.png 11 | images/checkbox-disabled.png 12 | images/checkbox-unchecked.png 13 | images/chevron-down.png 14 | images/bar-chart-2.png 15 | images/chevron-left.png 16 | images/chevron-right.png 17 | images/chevron-up.png 18 | images/compass.png 19 | images/crosshair.png 20 | images/crosshair_remove.png 21 | images/copy.png 22 | images/delete.png 23 | images/disc.png 24 | images/download.png 25 | images/cloud-drizzle.png 26 | images/edit.png 27 | images/eye.png 28 | images/splashscreen.jpg 29 | images/filter.png 30 | images/int_state.png 31 | images/layers.png 32 | images/layers_net.png 33 | images/link.png 34 | images/list.png 35 | images/menu.png 36 | images/minus.png 37 | images/monitor.png 38 | images/move.png 39 | images/play-circle.png 40 | images/plus-square.png 41 | images/plus.png 42 | images/radiobutton-checked.png 43 | images/radiobutton-unchecked.png 44 | images/refresh-cw.png 45 | images/save.png 46 | images/search.png 47 | images/square.png 48 | images/square32-alpha.png 49 | images/stop-circle.png 50 | images/trash-2.png 51 | images/trash.png 52 | images/truck.png 53 | images/unlink.png 54 | images/upload.png 55 | images/user-check.png 56 | images/user-x.png 57 | images/user2.png 58 | images/wind.png 59 | images/trending-down.png 60 | stylesheets/01.qss 61 | stylesheets/02.qss 62 | stylesheets/03.qss 63 | democfg/_DEMO_asa_01.txt 64 | democfg/_DEMO_docker_run_params_01.txt 65 | democfg/_DEMO_net_eth0_10.0.0.0.txt 66 | democfg/_DEMO_dockerfile_alpine01.txt 67 | democfg/_DEMO_dockerfile_fedora_01.txt 68 | democfg/_DEMO_eth0_ipv4_and_eth1_ipv6.txt 69 | 70 | 71 | -------------------------------------------------------------------------------- /src/stylesheets/01.qss: -------------------------------------------------------------------------------- 1 | 2 | 3 | QMainWindow { 4 | background-color: rgb(210,210,220,255); 5 | } 6 | 7 | 8 | QDialog { 9 | background-color: rgb(210,210,220,255); 10 | } 11 | 12 | QFileDialog { 13 | background-color: rgb(210,210,220,255); 14 | } 15 | 16 | QMessageBox { 17 | background-color: rgb(220,220,240,255); 18 | } 19 | 20 | 21 | 22 | QFrame { 23 | background-color: rgb(210,210,220,255); 24 | /* background:url('trees-in-the-snow-1321633816Vfq.jpg') */ 25 | } 26 | 27 | QWidget[paintme01=true] { 28 | background-color: rgb(180,180,250,255); 29 | 30 | /* background:url('trees-in-the-snow-1321633816Vfq.jpg') */ 31 | } 32 | 33 | 34 | QWidget[paintme02=true] { 35 | background-color: rgb(100,100,185,255); 36 | } 37 | 38 | QWidget[paintme03=true] { 39 | background-color: rgb(250,190,190,255); 40 | } 41 | 42 | QWidget[paintme04=true] { 43 | background-color: rgb(150,150,200,255); 44 | } 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | /* hello */ 53 | 54 | QPlainTextEdit { 55 | background-color: rgb(200,200,200,255); 56 | } 57 | 58 | 59 | 60 | QGroupBox { 61 | color: rgb(0,0,0,255); 62 | background-color: rgb(180,180,250,255); 63 | } 64 | 65 | 66 | QMenuBar { 67 | background-color: rgb(200,200,210,255); 68 | } 69 | 70 | QMenu { 71 | background-color: rgb(210,210,220,255); 72 | } 73 | 74 | 75 | QMenu::item { 76 | padding: 2px 60px 2px 60px; 77 | } 78 | 79 | 80 | QMenu::item:selected { 81 | background-color: rgb(180,250,180,255); 82 | color: black; 83 | } 84 | 85 | 86 | 87 | 88 | /**** QToolBox (enabled) ****/ 89 | QToolBox 90 | { 91 | background-color: transparent; 92 | } 93 | 94 | QToolBox::tab 95 | { 96 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 97 | border: 1px solid rgb(20,20,20); 98 | color: rgb(20,20,20); 99 | } 100 | 101 | QToolBox::tab:hover, 102 | QToolBox::tab:selected:hover 103 | { 104 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #C1D1E1, stop: 0.4 #ADADBD, stop: 0.5 #A8A8B8, stop: 1.0 #9393A3); 105 | } 106 | 107 | QToolBox::tab:selected 108 | { 109 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(180,210,240), stop: 0.4 rgb(150,180,230), stop: 0.5 rgb(140,170,220), stop: 1.0 rgb(120,150,200)); 110 | color: rgb(20,20,20); 111 | } 112 | 113 | QToolBox QScrollArea 114 | { 115 | background-color: rgb(100,100,100); 116 | border: 0px solid transparent; 117 | } 118 | 119 | 120 | QToolBox QScrollArea:disabled 121 | { 122 | background-color: rgb(120,120,120); 123 | border-color: transparent; 124 | } 125 | 126 | 127 | QPushButton { 128 | border: 2px solid #6666cc; 129 | border-radius: 6px; 130 | border-style: outset; 131 | color: rgb(0,0,0,255); 132 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 133 | padding-left: 2px; 134 | padding-right: 2px; 135 | min-height: 5px; 136 | } 137 | 138 | QPushButton[my_alarm=true] { 139 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D10000, stop: 0.4 #BD0000, stop: 0.5 #B80000, stop: 1.0 #A30000); 140 | } 141 | 142 | QPushButton[my_notice=true] { 143 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #5090D1, stop: 0.4 #5090BD, stop: 0.5 #5090B8, stop: 1.0 #5090A3); 144 | } 145 | 146 | QPushButton::hover { 147 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #C1D1E1, stop: 0.4 #ADADBD, stop: 0.5 #A8A8B8, stop: 1.0 #9393A3); 148 | } 149 | 150 | 151 | QPushButton:pressed { 152 | background-color: rgb(190,220,210,255); 153 | } 154 | 155 | QPushButton[enabled=false] { 156 | color: rgb(220,220,220,255); 157 | background: rgb(200,200,250,255); 158 | } 159 | 160 | 161 | 162 | 163 | QRadioButton::indicator::unchecked 164 | { 165 | image: url(':/images/radiobutton-unchecked.png'); 166 | } 167 | 168 | QRadioButton::indicator::checked 169 | { 170 | image: url(':/images/radiobutton-checked.png'); 171 | } 172 | 173 | 174 | QRadioButton[enabled=false] { 175 | color: rgb(160,160,160,255); 176 | } 177 | 178 | 179 | 180 | QCheckBox::indicator:unchecked[enabled=true] { 181 | image: url(:/images/checkbox-unchecked.png); 182 | } 183 | 184 | 185 | QCheckBox::indicator:checked[enabled=true] { 186 | image: url(:/images/checkbox-checked.png); 187 | } 188 | 189 | 190 | QHeaderView::section { 191 | background-color: rgb(170,170,230,255); 192 | color: black; 193 | padding-left: 4px; 194 | border: 1px solid #6c6c6c; 195 | } 196 | 197 | QLineEdit { 198 | /*border: 1px;*/ 199 | border-width: 1px; 200 | border-style: ridge; 201 | border-color: rgb(100,100,150,255); 202 | } 203 | 204 | 205 | 206 | QLineEdit[enabled=false] { 207 | background-color: rgb(185,185,255,255); 208 | color: rgb(160,160,160,255); 209 | } 210 | 211 | QLineEdit[enabled=true] { 212 | background-color: rgb(220,220,255,255); 213 | color: rgb(10,10,10,255); 214 | } 215 | 216 | QLineEdit:focus { 217 | background-color: rgb(210,255,210,255); 218 | color: rgb(10,10,10,255); 219 | } 220 | 221 | QLineEdit:hover { 222 | background-color: rgb(200,240,200,255); 223 | color: rgb(10,10,10,255); 224 | } 225 | 226 | 227 | 228 | QListWidget[enabled=true] { 229 | background: rgb(220,220,255,255); 230 | color: rgb(10,10,10,255); 231 | border: 5px solid black; 232 | } 233 | 234 | 235 | 236 | 237 | 238 | /* item selectionne dans liste deroulee */ 239 | QComboBox:!editable:on { 240 | background: rgb(50,120,50,255); 241 | color: rgb(100,200,100,255); 242 | border: 2px; 243 | } 244 | 245 | /* bouton fleche bas */ 246 | QComboBox[enabled=true] { 247 | background: rgb(220,220,255,255); 248 | color: rgb(10,10,10,255); 249 | border: 2px; 250 | } 251 | 252 | /* texte quand liste ferme*/ 253 | QComboBox:!editable { 254 | border: 2px solid #6666cc; 255 | border-radius: 6px; 256 | border-style: outset; 257 | selection-background-color: rgb(210,240,210); 258 | selection-color: rgb(0,0,0); 259 | color: rgb(0,0,0,255); 260 | /* background-color: rgb(230,230,255,255); */ 261 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 262 | 263 | padding-left: 5px; 264 | padding-right: 5px; 265 | min-width: 20px; 266 | min-height: 20px; 267 | 268 | } 269 | 270 | 271 | QComboBox:!editable:disabled { 272 | border: 2px solid #6666cc; 273 | border-radius: 6px; 274 | border-style: outset; 275 | color: rgb(160,160,160,255); 276 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E1E1F1, stop: 0.4 #B9B9FF, stop: 0.5 #B9B9FF, stop: 1.0 #C3C3D3); 277 | 278 | min-width: 30px; 279 | min-height: 20px; 280 | } 281 | 282 | 283 | 284 | 285 | 286 | QLabel { 287 | color: rgb(0,0,0,255); 288 | background: rgb(180,180,255,0); 289 | padding-left: 5px; 290 | padding-right: 5px; 291 | } 292 | 293 | QLabel[enabled=true] { 294 | color: rgb(0,0,0,255); 295 | background: rgb(180,180,255,0); 296 | } 297 | 298 | QLabel[enabled=false] { 299 | color: rgb(150,150,150,255); 300 | background: rgb(180,180,255,0); 301 | } 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | QScrollBar:vertical { 311 | border: 2px solid grey; 312 | background: lightgrey; 313 | min-height: 20px; 314 | } 315 | 316 | QScrollBar::handle:vertical { 317 | background: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 318 | border: 2px solid grey; 319 | border-style: outset; 320 | min-height: 10px; 321 | } 322 | 323 | /* fleche bas */ 324 | QScrollBar::add-line:vertical { 325 | border: 2px solid grey; 326 | image: url(':/images/chevron-down.png'); 327 | background: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 328 | border-style: outset; 329 | subcontrol-position: bottom; 330 | subcontrol-origin: margin; 331 | } 332 | 333 | /*fleche haut */ 334 | QScrollBar::sub-line:vertical { 335 | border: 2px solid grey; 336 | image: url(':/images/chevron-up.png'); 337 | background: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 338 | subcontrol-position: top; 339 | subcontrol-origin: margin; 340 | } 341 | 342 | 343 | QScrollBar:horizontal { 344 | border: 2px solid grey; 345 | background: lightgrey; 346 | min-width: 20px; 347 | } 348 | 349 | QScrollBar::handle:horizontal { 350 | background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 351 | border: 2px solid grey; 352 | border-style: outset; 353 | min-width: 10px; 354 | } 355 | 356 | /* fleche bas */ 357 | QScrollBar::add-line:horizontal { 358 | border: 2px solid grey; 359 | image: url(':/images/chevron-right.png'); 360 | background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 361 | border-style: outset; 362 | subcontrol-position: right; 363 | subcontrol-origin: margin; 364 | } 365 | 366 | /*fleche gauche */ 367 | QScrollBar::sub-line:horizontal { 368 | border: 2px solid grey; 369 | image: url(':/images/chevron-left.png'); 370 | background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 371 | subcontrol-position: left; 372 | subcontrol-origin: margin; 373 | } 374 | 375 | 376 | 377 | 378 | QTableWidget::item { 379 | padding: 5px 0px 5px 0px; 380 | } 381 | 382 | QTableView { 383 | border: 1px solid black; /*border qtablewidget */ 384 | } 385 | 386 | 387 | 388 | QTabWidget::pane { /* The tab widget frame */ 389 | border: 3px solid black; 390 | } 391 | 392 | QTabWidget::tab-bar { 393 | left: 5px; /* move to the right by 5px */ 394 | background: red; 395 | } 396 | 397 | 398 | QTabBar::tab { 399 | background: rgb(180,180,200,255); 400 | border: 1px solid rgb(100,100,220,255); 401 | border-bottom-color: #C2C7CB; /* same as the pane color */ 402 | border-top-left-radius: 4px; 403 | border-top-right-radius: 4px; 404 | min-width: 1ex; 405 | padding: 2px; 406 | } 407 | 408 | 409 | QTabBar::tab[subtab=true] { 410 | background: red; 411 | border: 2px solid #C4C4C3; 412 | border-bottom-color: #C2C7CB; /* same as the pane color */ 413 | border-top-left-radius: 16px; 414 | border-top-right-radius: 16px; 415 | min-width: 8ex; 416 | padding: 10px; 417 | } 418 | 419 | QTabBar::tab:selected { 420 | background: rgb(150,150,230,255); 421 | } 422 | 423 | QTabBar::tab:hover { 424 | background: rgb(180,250,180,255); 425 | } 426 | 427 | 428 | QPushButton[ledstate=true] { 429 | background-color: rgb(150,240,150,255); 430 | border-radius: 1px; 431 | padding-left: 0px; 432 | padding-right:0px; 433 | min-height: 2px; 434 | 435 | } 436 | 437 | QPushButton[ledstate=false] { 438 | background-color: rgb(250,100,100,255); 439 | border-radius: 1px; 440 | padding-left: 0px; 441 | padding-right:0px; 442 | min-height: 2px; 443 | } 444 | 445 | 446 | QPushButton[enabled=false] { 447 | color: rgb(220,220,220,255); 448 | background: rgb(200,200,250,255); 449 | } 450 | 451 | 452 | QCheckBox::indicator[enabled=false] { 453 | image: url(:/images/checkbox-disabled.png); 454 | } 455 | 456 | QCheckBox[enabled=false] { 457 | color: rgb(150,150,150,255); 458 | } 459 | 460 | 461 | QLabel#label_splashscreen { 462 | image: url(:/images/splashscreen.jpg); 463 | } 464 | -------------------------------------------------------------------------------- /src/stylesheets/02.qss: -------------------------------------------------------------------------------- 1 | 2 | 3 | QMainWindow { 4 | background-color: rgb(250,250,250,255); 5 | } 6 | 7 | 8 | QDialog { 9 | background-color: rgb(250,250,250,255); 10 | } 11 | 12 | QFileDialog { 13 | background-color: rgb(250,250,250,255); 14 | } 15 | 16 | QMessageBox { 17 | background-color: rgb(220,220,220,255); 18 | } 19 | 20 | 21 | 22 | QFrame { 23 | background-color: rgb(250,250,250,255); 24 | /* background:url('trees-in-the-snow-1321633816Vfq.jpg') */ 25 | } 26 | 27 | QWidget[paintme01=true] { 28 | background-color: rgb(220,220,220,255); 29 | 30 | /* background:url('trees-in-the-snow-1321633816Vfq.jpg') */ 31 | } 32 | 33 | 34 | QWidget[paintme02=true] { 35 | background-color: rgb(140,140,140,255); 36 | } 37 | 38 | QWidget[paintme03=true] { 39 | background-color: rgb(250,190,190,255); 40 | } 41 | 42 | QWidget[paintme04=true] { 43 | background-color: rgb(170,170,170,255); 44 | } 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | /* hello */ 53 | 54 | QPlainTextEdit { 55 | background-color: rgb(200,200,200,255); 56 | } 57 | 58 | 59 | 60 | QGroupBox { 61 | color: rgb(0,0,0,255); 62 | background-color: rgb(180,180,180,255); 63 | } 64 | 65 | 66 | QMenuBar { 67 | background-color: rgb(200,200,200,255); 68 | } 69 | 70 | QMenu { 71 | background-color: rgb(240,240,240,255); 72 | } 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | /**** QToolBox (enabled) ****/ 81 | QToolBox 82 | { 83 | background-color: transparent; 84 | } 85 | 86 | QToolBox::tab 87 | { 88 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 89 | border: 1px solid rgb(20,20,20); 90 | color: rgb(20,20,20); 91 | } 92 | 93 | QToolBox::tab:hover, 94 | QToolBox::tab:selected:hover 95 | { 96 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #C1D1E1, stop: 0.4 #ADADBD, stop: 0.5 #A8A8B8, stop: 1.0 #9393A3); 97 | } 98 | 99 | QToolBox::tab:selected 100 | { 101 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(180,210,240), stop: 0.4 rgb(150,180,230), stop: 0.5 rgb(140,170,220), stop: 1.0 rgb(120,150,200)); 102 | color: rgb(20,20,20); 103 | } 104 | 105 | QToolBox QScrollArea 106 | { 107 | background-color: rgb(100,100,100); 108 | border: 0px solid transparent; 109 | } 110 | 111 | 112 | QToolBox QScrollArea:disabled 113 | { 114 | background-color: rgb(120,120,120); 115 | border-color: transparent; 116 | } 117 | 118 | 119 | QPushButton { 120 | border: 2px solid #6666cc; 121 | border-radius: 6px; 122 | border-style: outset; 123 | color: rgb(0,0,0,255); 124 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 125 | padding-left: 2px; 126 | padding-right: 2px; 127 | min-height: 5px; 128 | } 129 | 130 | QPushButton[my_alarm=true] { 131 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D10000, stop: 0.4 #BD0000, stop: 0.5 #B80000, stop: 1.0 #A30000); 132 | } 133 | 134 | QPushButton[my_notice=true] { 135 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #5090D1, stop: 0.4 #5090BD, stop: 0.5 #5090B8, stop: 1.0 #5090A3); 136 | } 137 | 138 | QPushButton::hover { 139 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #B1E1B1, stop: 0.4 #9DBD9D, stop: 0.5 #98B898, stop: 1.0 #63A363); 140 | } 141 | 142 | 143 | QPushButton:pressed { 144 | background-color: rgb(190,220,210,255); 145 | } 146 | 147 | QPushButton[enabled=false] { 148 | color: rgb(220,220,220,255); 149 | background: rgb(200,200,250,255); 150 | } 151 | 152 | 153 | 154 | 155 | QRadioButton::indicator::unchecked 156 | { 157 | image: url(':/images/radiobutton-unchecked.png'); 158 | } 159 | 160 | QRadioButton::indicator::checked 161 | { 162 | image: url(':/images/radiobutton-checked.png'); 163 | } 164 | 165 | 166 | QRadioButton[enabled=false] { 167 | color: rgb(220,220,220,255); 168 | } 169 | 170 | 171 | 172 | QCheckBox::indicator:unchecked[enabled=true] { 173 | image: url(:/images/checkbox-unchecked.png); 174 | } 175 | 176 | 177 | QCheckBox::indicator:checked[enabled=true] { 178 | image: url(:/images/checkbox-checked.png); 179 | } 180 | 181 | 182 | QHeaderView::section { 183 | background-color: rgb(200,200,200,255); 184 | color: black; 185 | padding-left: 4px; 186 | border: 1px solid #6c6c6c; 187 | } 188 | 189 | QLineEdit { 190 | /*border: 1px;*/ 191 | border-width: 1px; 192 | border-style: ridge; 193 | border-color: rgb(100,100,150,255); 194 | } 195 | 196 | 197 | 198 | QLineEdit[enabled=false] { 199 | background-color: rgb(230,230,230,255); 200 | color: rgb(160,160,160,255); 201 | } 202 | 203 | QLineEdit[enabled=true] { 204 | background-color: rgb(250,250,250,255); 205 | color: rgb(10,10,10,255); 206 | } 207 | 208 | QLineEdit:focus { 209 | background-color: rgb(210,255,210,255); 210 | color: rgb(10,10,10,255); 211 | } 212 | 213 | QLineEdit:hover { 214 | background-color: rgb(200,240,200,255); 215 | color: rgb(10,10,10,255); 216 | } 217 | 218 | 219 | 220 | QListWidget[enabled=true] { 221 | background: rgb(250,250,250,255); 222 | color: rgb(10,10,10,255); 223 | border: 5px solid black; 224 | } 225 | 226 | 227 | 228 | 229 | /* item selectionne dans liste deroulee */ 230 | 231 | 232 | QComboBox:!editable:hover { 233 | /*background: rgb(200,230,200,255);*/ 234 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #B1E1B1, stop: 0.4 #9DBD9D, stop: 0.5 #98B898, stop: 1.0 #63A363); 235 | color: rgb(0,0,0,255); 236 | border: 2px; 237 | } 238 | 239 | 240 | QComboBox:!editable:on { 241 | background: rgb(100,160,100,255); 242 | color: rgb(50,100,50,255); 243 | border: 2px; 244 | } 245 | 246 | 247 | 248 | /* bouton fleche bas */ 249 | QComboBox[enabled=true] { 250 | background: rgb(220,220,255,255); 251 | color: rgb(100,100,100,255); 252 | border: 2px; 253 | } 254 | 255 | /* texte quand liste ferme*/ 256 | 257 | 258 | 259 | QComboBox:!editable { 260 | border: 2px solid #6666cc; 261 | border-radius: 6px; 262 | border-style: outset; 263 | selection-background-color: rgb(210,240,210); 264 | selection-color: rgb(0,0,0); 265 | color: rgb(0,0,0,255); 266 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 267 | padding-left: 5px; 268 | padding-right: 5px; 269 | min-width: 20px; 270 | min-height: 20px; 271 | } 272 | 273 | 274 | 275 | QComboBox:!editable:disabled { 276 | border: 2px solid #6666cc; 277 | border-radius: 6px; 278 | border-style: outset; 279 | color: rgb(160,160,160,255); 280 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E1E1E1, stop: 0.4 #B9B9B9, stop: 0.5 #B9B9B9, stop: 1.0 #C3C3C3); 281 | 282 | min-width: 30px; 283 | min-height: 20px; 284 | } 285 | 286 | 287 | 288 | 289 | 290 | QLabel { 291 | color: rgb(0,0,0,255); 292 | background: rgb(180,180,255,0); 293 | padding-left: 5px; 294 | padding-right: 5px; 295 | } 296 | 297 | QLabel[enabled=true] { 298 | color: rgb(0,0,0,255); 299 | background: rgb(180,180,255,0); 300 | } 301 | 302 | QLabel[enabled=false] { 303 | color: rgb(150,150,150,255); 304 | background: rgb(180,180,255,0); 305 | } 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | QScrollBar:vertical { 315 | border: 2px solid grey; 316 | background: lightgrey; 317 | min-height: 20px; 318 | } 319 | 320 | QScrollBar::handle:vertical { 321 | background: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 322 | border: 2px solid grey; 323 | border-style: outset; 324 | min-height: 10px; 325 | } 326 | 327 | /* fleche bas */ 328 | QScrollBar::add-line:vertical { 329 | border: 2px solid grey; 330 | image: url(':/images/chevron-down.png'); 331 | background: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 332 | border-style: outset; 333 | subcontrol-position: bottom; 334 | subcontrol-origin: margin; 335 | } 336 | 337 | /*fleche haut */ 338 | QScrollBar::sub-line:vertical { 339 | border: 2px solid grey; 340 | image: url(':/images/chevron-up.png'); 341 | background: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 342 | subcontrol-position: top; 343 | subcontrol-origin: margin; 344 | } 345 | 346 | 347 | QScrollBar:horizontal { 348 | border: 2px solid grey; 349 | background: lightgrey; 350 | min-width: 20px; 351 | } 352 | 353 | QScrollBar::handle:horizontal { 354 | background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 355 | border: 2px solid grey; 356 | border-style: outset; 357 | min-width: 10px; 358 | } 359 | 360 | /* fleche bas */ 361 | QScrollBar::add-line:horizontal { 362 | border: 2px solid grey; 363 | image: url(':/images/chevron-right.png'); 364 | background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 365 | border-style: outset; 366 | subcontrol-position: right; 367 | subcontrol-origin: margin; 368 | } 369 | 370 | /*fleche gauche */ 371 | QScrollBar::sub-line:horizontal { 372 | border: 2px solid grey; 373 | image: url(':/images/chevron-left.png'); 374 | background: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0, stop: 0 #D1E1E1, stop: 0.4 #BDBDBD, stop: 0.5 #B8B8B8, stop: 1.0 #A3A3A3); 375 | subcontrol-position: left; 376 | subcontrol-origin: margin; 377 | } 378 | 379 | 380 | 381 | 382 | QTableWidget::item { 383 | padding: 5px 0px 5px 0px; 384 | } 385 | 386 | QTableView { 387 | border: 1px solid black; /*border qtablewidget */ 388 | } 389 | 390 | 391 | 392 | QTabWidget::pane { /* The tab widget frame */ 393 | border: 3px solid black; 394 | } 395 | 396 | QTabWidget::tab-bar { 397 | left: 5px; /* move to the right by 5px */ 398 | background: red; 399 | } 400 | 401 | 402 | QTabBar::tab { 403 | background: rgb(200,200,200,255); 404 | border: 1px solid rgb(100,100,220,255); 405 | border-bottom-color: #C2C7CB; /* same as the pane color */ 406 | border-top-left-radius: 4px; 407 | border-top-right-radius: 4px; 408 | min-width: 1ex; 409 | padding: 2px; 410 | } 411 | 412 | 413 | QTabBar::tab[subtab=true] { 414 | background: red; 415 | border: 2px solid #C4C4C3; 416 | border-bottom-color: #C2C7CB; /* same as the pane color */ 417 | border-top-left-radius: 16px; 418 | border-top-right-radius: 16px; 419 | min-width: 8ex; 420 | padding: 10px; 421 | } 422 | 423 | QTabBar::tab:selected { 424 | background: rgb(230,230,230,255); 425 | } 426 | 427 | QTabBar::tab:hover { 428 | background: rgb(180,250,180,255); 429 | } 430 | 431 | 432 | QPushButton[ledstate=true] { 433 | background-color: rgb(150,240,150,255); 434 | border-radius: 1px; 435 | padding-left: 0px; 436 | padding-right:0px; 437 | min-height: 2px; 438 | 439 | } 440 | 441 | QPushButton[ledstate=false] { 442 | background-color: rgb(250,100,100,255); 443 | border-radius: 1px; 444 | padding-left: 0px; 445 | padding-right:0px; 446 | min-height: 2px; 447 | } 448 | 449 | 450 | QPushButton[enabled=false] { 451 | color: rgb(220,220,220,255); 452 | background: rgb(240,240,240,255); 453 | } 454 | 455 | 456 | QCheckBox::indicator[enabled=false] { 457 | image: url(:/images/checkbox-disabled.png); 458 | } 459 | 460 | QCheckBox[enabled=false] { 461 | color: rgb(220,220,220,255); 462 | } 463 | 464 | 465 | QLabel#label_splashscreen { 466 | image: url(:/images/splashscreen.jpg); 467 | } 468 | -------------------------------------------------------------------------------- /src/stylesheets/02.qss.back: -------------------------------------------------------------------------------- 1 | 2 | 3 | QMainWindow { 4 | background-color: rgb(220,220,220,255); 5 | } 6 | 7 | 8 | QDialog { 9 | background-color: rgb(220,220,220,255); 10 | } 11 | 12 | QFileDialog { 13 | background-color: rgb(220,220,220,255); 14 | } 15 | 16 | QMessageBox { 17 | background-color: rgb(220,220,220,255); 18 | } 19 | 20 | 21 | 22 | QFrame { 23 | background-color: rgb(220,220,220,255); 24 | } 25 | 26 | QWidget[paintme01=true] { 27 | background-color: rgb(220,220,220,255); 28 | } 29 | 30 | QWidget[paintme02=true] { 31 | background-color: rgb(220,220,220,255); 32 | } 33 | 34 | QWidget[paintme03=true] { 35 | background-color: rgb(220,220,220,255); 36 | } 37 | 38 | 39 | 40 | /* hello */ 41 | 42 | QPlainTextEdit { 43 | background-color: rgb(255,255,255,255); 44 | } 45 | 46 | 47 | 48 | QGroupBox { 49 | color: rgb(0,0,0,255); 50 | background-color: rgb(220,220,220,255); 51 | } 52 | 53 | 54 | QMenuBar { 55 | background-color: rgb(220,220,220,255); 56 | } 57 | 58 | QMenu { 59 | background-color: rgb(220,220,220,255); 60 | } 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | /**** QToolBox (enabled) ****/ 69 | QToolBox 70 | { 71 | background-color: transparent; 72 | } 73 | 74 | QToolBox::tab 75 | { 76 | background: rgb(220,220,220,255); 77 | border: 1px solid rgb(20,20,20); 78 | color: rgb(20,20,20); 79 | } 80 | 81 | QToolBox::tab:hover, 82 | QToolBox::tab:selected:hover 83 | { 84 | background: rgb(220,220,220,255); 85 | } 86 | 87 | QToolBox::tab:selected 88 | { 89 | background: rgb(220,220,220,255); 90 | color: rgb(20,20,20); 91 | } 92 | 93 | QToolBox QScrollArea 94 | { 95 | background-color: rgb(220,220,220,255); 96 | border: 0px solid transparent; 97 | } 98 | 99 | 100 | QToolBox QScrollArea:disabled 101 | { 102 | background-color: rgb(120,120,120); 103 | border-color: transparent; 104 | } 105 | 106 | 107 | QPushButton { 108 | border: 2px solid #6666cc; 109 | border-radius: 6px; 110 | border-style: outset; 111 | color: rgb(0,0,0,255); 112 | background: rgb(255,255,255,255); 113 | padding-left: 5px; 114 | padding-right: 5px; 115 | min-height: 20px; 116 | } 117 | 118 | QPushButton[alarm=true] { 119 | border: 2px solid #6666cc; 120 | border-radius: 6px; 121 | border-style: outset; 122 | color: rgb(0,0,0,255); 123 | /* background-color: rgb(230,230,255,255); */ 124 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #D10000, stop: 0.4 #BD0000, stop: 0.5 #B80000, stop: 1.0 #A30000); 125 | padding-left: 5px; 126 | padding-right: 5px; 127 | min-height: 20px; 128 | } 129 | 130 | 131 | 132 | QPushButton::hover { 133 | background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #C1D1E1, stop: 0.4 #ADADBD, stop: 0.5 #A8A8B8, stop: 1.0 #9393A3); 134 | } 135 | 136 | 137 | QPushButton:pressed { 138 | border: 2px solid #6666cc; 139 | border-radius: 6px; 140 | border-style: outset; 141 | color: rgb(0,0,0,255); 142 | background-color: rgb(220,220,220,255); 143 | 144 | min-width: 30px; 145 | min-height: 20px; 146 | } 147 | 148 | QPushButton[enabled=false] { 149 | color: rgb(180,180,180,255); 150 | background: rgb(220,220,220,255); 151 | border: 2px; 152 | } 153 | 154 | QRadioButton[enabled=false] { 155 | color: rgb(160,160,160,255); 156 | } 157 | 158 | 159 | QLineEdit[enabled=false] { 160 | background-color: rgb(220,220,220,255); 161 | color: rgb(160,160,160,255); 162 | border: 2px; 163 | } 164 | 165 | QLineEdit[enabled=true] { 166 | background-color: rgb(255,255,255,255);; 167 | color: rgb(10,10,10,255); 168 | border: 2px; 169 | } 170 | 171 | QLineEdit:focus { 172 | background-color: rgb(220,220,220,255); 173 | color: rgb(10,10,10,255); 174 | border: 2px; 175 | } 176 | 177 | QListWidget[enabled=true] { 178 | background: rgb(255,255,255,255); 179 | color: rgb(10,10,10,255); 180 | border: 2px; 181 | } 182 | 183 | 184 | 185 | 186 | 187 | /* item selectionne dans liste deroulee */ 188 | QComboBox:!editable:on { 189 | background: rgb(50,120,50,255); 190 | color: rgb(220,220,220,255); 191 | border: 2px; 192 | } 193 | 194 | /* bouton fleche bas */ 195 | QComboBox[enabled=true] { 196 | background: rgb(220,220,220,255); 197 | color: rgb(10,10,10,255); 198 | border: 2px; 199 | } 200 | 201 | /* texte quand liste ferme*/ 202 | QComboBox:!editable { 203 | border: 2px solid #6666cc; 204 | border-radius: 6px; 205 | border-style: outset; 206 | color: rgb(0,0,0,255); 207 | /* background-color: rgb(230,230,255,255); */ 208 | background: rgb(220,220,220,255); 209 | 210 | padding-left: 5px; 211 | padding-right: 5px; 212 | min-width: 20px; 213 | min-height: 20px; 214 | 215 | } 216 | 217 | 218 | QComboBox:!editable:disabled { 219 | border: 2px solid #6666cc; 220 | border-radius: 6px; 221 | border-style: outset; 222 | color: rgb(160,160,160,255); 223 | background: rgb(220,220,220,255); 224 | 225 | min-width: 30px; 226 | min-height: 20px; 227 | } 228 | 229 | 230 | 231 | 232 | 233 | QLabel { 234 | color: rgb(0,0,0,255); 235 | background: rgb(220,220,220,255); 236 | padding-left: 5px; 237 | padding-right: 5px; 238 | } 239 | 240 | QLabel[enabled=true] { 241 | color: rgb(0,0,0,255); 242 | background: rgb(220,220,220,255); 243 | } 244 | 245 | QLabel[enabled=false] { 246 | color: rgb(150,150,150,255); 247 | background: rgb(220,220,220,255); 248 | } 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | QScrollBar:vertical { 258 | border: 2px solid grey; 259 | background: lightgrey; 260 | width: 25px; 261 | margin: 30px 0 30px 0; 262 | } 263 | QScrollBar::handle:vertical { 264 | background: rgb(220,220,220,255); 265 | border: 2px solid grey; 266 | border-style: outset; 267 | min-height: 10px; 268 | } 269 | 270 | /* fleche bas */ 271 | QScrollBar::add-line:vertical { 272 | border: 2px solid grey; 273 | image: url('chevron-down.png'); 274 | background: rgb(220,220,220,255); 275 | border-style: outset; 276 | subcontrol-position: bottom; 277 | subcontrol-origin: margin; 278 | } 279 | 280 | /*fleche haut */ 281 | QScrollBar::sub-line:vertical { 282 | border: 2px solid grey; 283 | image: url('chevron-up.png'); 284 | background: rgb(220,220,220,255); 285 | subcontrol-position: top; 286 | subcontrol-origin: margin; 287 | } 288 | 289 | 290 | QTableWidget { 291 | background: rgb(255,255,255,255); 292 | } 293 | 294 | 295 | 296 | QTableWidget::item { 297 | rgb(255,255,255,255); 298 | padding: 5px 0px 5px 0px; 299 | } 300 | 301 | -------------------------------------------------------------------------------- /src/stylesheets/03.qss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/stylesheets/03.qss -------------------------------------------------------------------------------- /src/tmp/readme.txt: -------------------------------------------------------------------------------- 1 | Directory for temporary build files 2 | -------------------------------------------------------------------------------- /src/wiki/IPFIX.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/IPFIX.jpg -------------------------------------------------------------------------------- /src/wiki/bondb1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondb1.jpg -------------------------------------------------------------------------------- /src/wiki/bondb1verif.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondb1verif.jpg -------------------------------------------------------------------------------- /src/wiki/bondb2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondb2.jpg -------------------------------------------------------------------------------- /src/wiki/bondcreate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondcreate.jpg -------------------------------------------------------------------------------- /src/wiki/bonddiag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddiag.jpg -------------------------------------------------------------------------------- /src/wiki/bonddiagbroken.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddiagbroken.jpg -------------------------------------------------------------------------------- /src/wiki/bonddiagbroken2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddiagbroken2.jpg -------------------------------------------------------------------------------- /src/wiki/bonddiagbroken3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddiagbroken3.jpg -------------------------------------------------------------------------------- /src/wiki/bonddisable1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddisable1.jpg -------------------------------------------------------------------------------- /src/wiki/bonddisable2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddisable2.jpg -------------------------------------------------------------------------------- /src/wiki/bonddisableplotnetcfg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddisableplotnetcfg.jpg -------------------------------------------------------------------------------- /src/wiki/bonddisableplotnetcfg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bonddisableplotnetcfg2.jpg -------------------------------------------------------------------------------- /src/wiki/bondping01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondping01.jpg -------------------------------------------------------------------------------- /src/wiki/bondplotnetcfg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondplotnetcfg.jpg -------------------------------------------------------------------------------- /src/wiki/bondstatus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondstatus.jpg -------------------------------------------------------------------------------- /src/wiki/bondveth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondveth.jpg -------------------------------------------------------------------------------- /src/wiki/bondveth2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/bondveth2.jpg -------------------------------------------------------------------------------- /src/wiki/comm01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm01.jpg -------------------------------------------------------------------------------- /src/wiki/comm01.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm01.xcf -------------------------------------------------------------------------------- /src/wiki/comm02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm02.jpg -------------------------------------------------------------------------------- /src/wiki/comm03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm03.jpg -------------------------------------------------------------------------------- /src/wiki/comm04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm04.jpg -------------------------------------------------------------------------------- /src/wiki/comm05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm05.jpg -------------------------------------------------------------------------------- /src/wiki/comm06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm06.jpg -------------------------------------------------------------------------------- /src/wiki/comm07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/comm07.jpg -------------------------------------------------------------------------------- /src/wiki/cust_comm_prof_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/cust_comm_prof_01.jpg -------------------------------------------------------------------------------- /src/wiki/deletebond.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/deletebond.jpg -------------------------------------------------------------------------------- /src/wiki/deletevethpairs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/deletevethpairs.jpg -------------------------------------------------------------------------------- /src/wiki/deletingqos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/deletingqos.jpg -------------------------------------------------------------------------------- /src/wiki/deletingqos2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/deletingqos2.jpg -------------------------------------------------------------------------------- /src/wiki/deletingqueue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/deletingqueue.jpg -------------------------------------------------------------------------------- /src/wiki/delport.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/delport.jpg -------------------------------------------------------------------------------- /src/wiki/diagqos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/diagqos.jpg -------------------------------------------------------------------------------- /src/wiki/dockerfile01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerfile01.png -------------------------------------------------------------------------------- /src/wiki/dockerfile02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerfile02.png -------------------------------------------------------------------------------- /src/wiki/dockerfile03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerfile03.png -------------------------------------------------------------------------------- /src/wiki/dockerimage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerimage.jpg -------------------------------------------------------------------------------- /src/wiki/dockerinspect01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerinspect01.jpg -------------------------------------------------------------------------------- /src/wiki/dockerinspect02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerinspect02.jpg -------------------------------------------------------------------------------- /src/wiki/dockernet01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernet01.jpg -------------------------------------------------------------------------------- /src/wiki/dockernet02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernet02.jpg -------------------------------------------------------------------------------- /src/wiki/dockernet03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernet03.jpg -------------------------------------------------------------------------------- /src/wiki/dockernet04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernet04.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetiter01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetiter01.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetiter02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetiter02.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetiter03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetiter03.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetiter04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetiter04.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetiter05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetiter05.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetiter06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetiter06.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetmulti01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetmulti01.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetmulti02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetmulti02.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetmulti03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetmulti03.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetmulti04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetmulti04.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetverif01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetverif01.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetverif02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetverif02.jpg -------------------------------------------------------------------------------- /src/wiki/dockernetverif03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockernetverif03.jpg -------------------------------------------------------------------------------- /src/wiki/dockerrm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerrm.jpg -------------------------------------------------------------------------------- /src/wiki/dockerrun01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerrun01.jpg -------------------------------------------------------------------------------- /src/wiki/dockerrun02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dockerrun02.jpg -------------------------------------------------------------------------------- /src/wiki/dummyport.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dummyport.jpg -------------------------------------------------------------------------------- /src/wiki/dummyport02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dummyport02.jpg -------------------------------------------------------------------------------- /src/wiki/dummyport03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/dummyport03.jpg -------------------------------------------------------------------------------- /src/wiki/eye.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/eye.jpg -------------------------------------------------------------------------------- /src/wiki/gre01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/gre01.jpg -------------------------------------------------------------------------------- /src/wiki/gre02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/gre02.jpg -------------------------------------------------------------------------------- /src/wiki/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/header.jpg -------------------------------------------------------------------------------- /src/wiki/header2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/header2.jpg -------------------------------------------------------------------------------- /src/wiki/ifstats01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ifstats01.jpg -------------------------------------------------------------------------------- /src/wiki/ifstats02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ifstats02.jpg -------------------------------------------------------------------------------- /src/wiki/ifstatus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ifstatus.jpg -------------------------------------------------------------------------------- /src/wiki/ingresspolicing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ingresspolicing.jpg -------------------------------------------------------------------------------- /src/wiki/iperf01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/iperf01.jpg -------------------------------------------------------------------------------- /src/wiki/iperf02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/iperf02.jpg -------------------------------------------------------------------------------- /src/wiki/iperf03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/iperf03.jpg -------------------------------------------------------------------------------- /src/wiki/iterc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/iterc.jpg -------------------------------------------------------------------------------- /src/wiki/itern.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/itern.jpg -------------------------------------------------------------------------------- /src/wiki/kvm01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/kvm01.jpg -------------------------------------------------------------------------------- /src/wiki/kvmdisk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/kvmdisk.jpg -------------------------------------------------------------------------------- /src/wiki/kvmnet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/kvmnet.jpg -------------------------------------------------------------------------------- /src/wiki/kvmrun01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/kvmrun01.jpg -------------------------------------------------------------------------------- /src/wiki/kvmrun02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/kvmrun02.jpg -------------------------------------------------------------------------------- /src/wiki/kvmrun03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/kvmrun03.jpg -------------------------------------------------------------------------------- /src/wiki/kvmrunplotnetcfg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/kvmrunplotnetcfg.jpg -------------------------------------------------------------------------------- /src/wiki/link.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/link.jpg -------------------------------------------------------------------------------- /src/wiki/list1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/list1.jpg -------------------------------------------------------------------------------- /src/wiki/list2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/list2.jpg -------------------------------------------------------------------------------- /src/wiki/list3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/list3.jpg -------------------------------------------------------------------------------- /src/wiki/magnifier.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/magnifier.jpg -------------------------------------------------------------------------------- /src/wiki/mcastconfig.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcastconfig.jpg -------------------------------------------------------------------------------- /src/wiki/mcastiperf01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcastiperf01.jpg -------------------------------------------------------------------------------- /src/wiki/mcastiperf02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcastiperf02.jpg -------------------------------------------------------------------------------- /src/wiki/mcastmdb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcastmdb.jpg -------------------------------------------------------------------------------- /src/wiki/mcastperport.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcastperport.jpg -------------------------------------------------------------------------------- /src/wiki/mcaststats01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcaststats01.jpg -------------------------------------------------------------------------------- /src/wiki/mcaststats02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcaststats02.jpg -------------------------------------------------------------------------------- /src/wiki/mcaststats03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcaststats03.jpg -------------------------------------------------------------------------------- /src/wiki/mcastwireshark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/mcastwireshark.jpg -------------------------------------------------------------------------------- /src/wiki/multicastnetwork.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/multicastnetwork.jpg -------------------------------------------------------------------------------- /src/wiki/netflow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/netflow.jpg -------------------------------------------------------------------------------- /src/wiki/noshut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/noshut.jpg -------------------------------------------------------------------------------- /src/wiki/ntop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ntop.jpg -------------------------------------------------------------------------------- /src/wiki/ntop02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ntop02.jpg -------------------------------------------------------------------------------- /src/wiki/ntop03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ntop03.jpg -------------------------------------------------------------------------------- /src/wiki/ntop04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ntop04.jpg -------------------------------------------------------------------------------- /src/wiki/overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/overview.jpg -------------------------------------------------------------------------------- /src/wiki/ovs-toolbox_console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ovs-toolbox_console.png -------------------------------------------------------------------------------- /src/wiki/ovsselector.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/ovsselector.jpg -------------------------------------------------------------------------------- /src/wiki/plotnetcfg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/plotnetcfg.jpg -------------------------------------------------------------------------------- /src/wiki/plus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/plus.jpg -------------------------------------------------------------------------------- /src/wiki/plusbox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/plusbox.jpg -------------------------------------------------------------------------------- /src/wiki/port01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/port01.jpg -------------------------------------------------------------------------------- /src/wiki/port02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/port02.jpg -------------------------------------------------------------------------------- /src/wiki/port03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/port03.jpg -------------------------------------------------------------------------------- /src/wiki/portdisable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/portdisable.jpg -------------------------------------------------------------------------------- /src/wiki/portmirroring.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/portmirroring.jpg -------------------------------------------------------------------------------- /src/wiki/qos01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qos01.jpg -------------------------------------------------------------------------------- /src/wiki/qos02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qos02.jpg -------------------------------------------------------------------------------- /src/wiki/qos03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qos03.jpg -------------------------------------------------------------------------------- /src/wiki/qosegress01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosegress01.jpg -------------------------------------------------------------------------------- /src/wiki/qosegress02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosegress02.jpg -------------------------------------------------------------------------------- /src/wiki/qosmap01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosmap01.jpg -------------------------------------------------------------------------------- /src/wiki/qosmap02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosmap02.jpg -------------------------------------------------------------------------------- /src/wiki/qosmap03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosmap03.jpg -------------------------------------------------------------------------------- /src/wiki/qosmap04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosmap04.jpg -------------------------------------------------------------------------------- /src/wiki/qosmap05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosmap05.jpg -------------------------------------------------------------------------------- /src/wiki/qosof01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosof01.jpg -------------------------------------------------------------------------------- /src/wiki/qosof02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosof02.jpg -------------------------------------------------------------------------------- /src/wiki/qosofedit01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosofedit01.jpg -------------------------------------------------------------------------------- /src/wiki/qosout01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/qosout01.jpg -------------------------------------------------------------------------------- /src/wiki/queue01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/queue01.jpg -------------------------------------------------------------------------------- /src/wiki/queue02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/queue02.jpg -------------------------------------------------------------------------------- /src/wiki/sflow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/sflow.jpg -------------------------------------------------------------------------------- /src/wiki/shut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/shut.jpg -------------------------------------------------------------------------------- /src/wiki/trash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/trash.jpg -------------------------------------------------------------------------------- /src/wiki/trash2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/trash2.jpg -------------------------------------------------------------------------------- /src/wiki/unlinkingqos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/unlinkingqos.jpg -------------------------------------------------------------------------------- /src/wiki/unlinkingqos2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/unlinkingqos2.jpg -------------------------------------------------------------------------------- /src/wiki/unlinkingqueue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/unlinkingqueue.jpg -------------------------------------------------------------------------------- /src/wiki/unlinkingqueue2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/unlinkingqueue2.jpg -------------------------------------------------------------------------------- /src/wiki/validate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/validate.jpg -------------------------------------------------------------------------------- /src/wiki/vethping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/vethping.jpg -------------------------------------------------------------------------------- /src/wiki/vethplotnetcfg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/vethplotnetcfg.jpg -------------------------------------------------------------------------------- /src/wiki/vlanmirroring.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/vlanmirroring.jpg -------------------------------------------------------------------------------- /src/wiki/wireshark01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/wireshark01.jpg -------------------------------------------------------------------------------- /src/wiki/wireshark02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nbonnand/ovs-toolbox/ca5fef13828781b3f5548d5dee69c8280f823154/src/wiki/wireshark02.jpg -------------------------------------------------------------------------------- /test/README.txt: -------------------------------------------------------------------------------- 1 | Simple tests to validate that python/qt is working in your environment 2 | These tests display a popup with "Hello World" 3 | 4 | To run them: 5 | 6 | python3 hello_world01.py 7 | 8 | python3 hello_world02.py 9 | 10 | -------------------------------------------------------------------------------- /test/hello_world01.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | from PyQt5.QtWidgets import QApplication, QLabel 4 | 5 | app = QApplication([]) 6 | label = QLabel(' Hello World !!!! ') 7 | label.show() 8 | app.exec_() 9 | -------------------------------------------------------------------------------- /test/hello_world02.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | # -*- coding: utf-8 -*- 4 | 5 | # Form implementation generated from reading ui file 'hello.ui' 6 | # 7 | # Created by: PyQt5 UI code generator 5.14.2 8 | # 9 | # WARNING! All changes made in this file will be lost! 10 | 11 | 12 | from PyQt5 import QtCore, QtGui, QtWidgets 13 | 14 | 15 | class Ui_Dialog(object): 16 | def setupUi(self, Dialog): 17 | Dialog.setObjectName("Dialog") 18 | Dialog.resize(400, 300) 19 | self.gridLayout = QtWidgets.QGridLayout(Dialog) 20 | self.gridLayout.setObjectName("gridLayout") 21 | self.label = QtWidgets.QLabel(Dialog) 22 | self.label.setAlignment(QtCore.Qt.AlignCenter) 23 | self.label.setObjectName("label") 24 | self.gridLayout.addWidget(self.label, 0, 0, 1, 1) 25 | self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) 26 | self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 27 | self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) 28 | self.buttonBox.setObjectName("buttonBox") 29 | self.gridLayout.addWidget(self.buttonBox, 1, 0, 1, 1) 30 | 31 | self.retranslateUi(Dialog) 32 | self.buttonBox.accepted.connect(Dialog.accept) 33 | self.buttonBox.rejected.connect(Dialog.reject) 34 | QtCore.QMetaObject.connectSlotsByName(Dialog) 35 | 36 | def retranslateUi(self, Dialog): 37 | _translate = QtCore.QCoreApplication.translate 38 | Dialog.setWindowTitle(_translate("Dialog", "Hello World")) 39 | self.label.setText(_translate("Dialog", "Hello World")) 40 | 41 | 42 | if __name__ == "__main__": 43 | import sys 44 | app = QtWidgets.QApplication(sys.argv) 45 | Dialog = QtWidgets.QDialog() 46 | ui = Ui_Dialog() 47 | ui.setupUi(Dialog) 48 | Dialog.show() 49 | sys.exit(app.exec_()) 50 | --------------------------------------------------------------------------------