├── .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 | 
2 |
3 | # ovs-toolbox
4 | ovs-toolbox.py is a graphical user interface for Open vSwitch (OvS).
5 |
6 | 
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 |
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 |
--------------------------------------------------------------------------------