add archi strat
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
parent
6cd4d7ad64
commit
da00a64d8e
4 changed files with 699 additions and 4 deletions
|
|
@ -1,4 +1,84 @@
|
||||||
# Fonctionnement des vms
|
## Fonctionnement des vms
|
||||||
|
|
||||||
|
### Structure de demande de creation de VM
|
||||||
|
|
||||||
|
```go
|
||||||
|
type Volume struct {
|
||||||
|
path string `/ou/ce/trouve/le/fichier/qcow2`
|
||||||
|
position int `[0-9]*`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Network struct {
|
||||||
|
vxlanid int `0-2000000`
|
||||||
|
netname string `vpc-[0-1,a-z]10`
|
||||||
|
subnetname string `subnet-[0-1,a-z]10`
|
||||||
|
position int `[0-9]*`
|
||||||
|
ipV4 string
|
||||||
|
gatewayV4 string
|
||||||
|
ipV6 string
|
||||||
|
gatewayV6 string
|
||||||
|
}
|
||||||
|
|
||||||
|
type NetRule struct {
|
||||||
|
proto string
|
||||||
|
port int
|
||||||
|
source string
|
||||||
|
destination string
|
||||||
|
}
|
||||||
|
|
||||||
|
type VmConfig struct {
|
||||||
|
Id string `i-[0-9]10`
|
||||||
|
Volumes Volume[]
|
||||||
|
Networks Network[]
|
||||||
|
MemoryMB int
|
||||||
|
CPUs int
|
||||||
|
Rules NetRule[]
|
||||||
|
Keys string[]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Structure de gestion des ressources
|
||||||
|
|
||||||
|
```go
|
||||||
|
vm_list
|
||||||
|
volume_list
|
||||||
|
metadata_server
|
||||||
|
network_id_info
|
||||||
|
subnet_list
|
||||||
|
vm_id_list
|
||||||
|
```
|
||||||
|
|
||||||
|
### ordre d'execution
|
||||||
|
|
||||||
|
```
|
||||||
|
Create_VM:
|
||||||
|
add vm in list, state pending
|
||||||
|
if subnet do not exist: <- does not exist if not il list
|
||||||
|
if network do not exist: <- does not exist if we do not have a subnet in it
|
||||||
|
add network in list, state pending
|
||||||
|
create netns
|
||||||
|
create veth
|
||||||
|
create internal_bridge
|
||||||
|
set network, state created
|
||||||
|
create tap
|
||||||
|
launch metadata/dhcp server
|
||||||
|
if qcow2 file does not exist <- simple file check
|
||||||
|
create qcow2 files
|
||||||
|
start vm
|
||||||
|
set vm on running
|
||||||
|
|
||||||
|
Delete_VM:
|
||||||
|
stop vm
|
||||||
|
stop metadata/dhcp server
|
||||||
|
remove tap
|
||||||
|
if last vm in subnet
|
||||||
|
delete subnet
|
||||||
|
delete veth
|
||||||
|
if last subnet in net
|
||||||
|
delete net
|
||||||
|
remove subnet from list
|
||||||
|
remove vm form list
|
||||||
|
```
|
||||||
|
|
||||||
## Demarrage
|
## Demarrage
|
||||||
|
|
||||||
|
|
@ -47,7 +127,7 @@ func StartVM(cfg VMConfig) (*VMInstance, error) {
|
||||||
"-name", cfg.Name,
|
"-name", cfg.Name,
|
||||||
"-m", fmt.Sprintf("%d", cfg.MemoryMB),
|
"-m", fmt.Sprintf("%d", cfg.MemoryMB),
|
||||||
"-smp", fmt.Sprintf("%d", cfg.CPUs),
|
"-smp", fmt.Sprintf("%d", cfg.CPUs),
|
||||||
"-drive", fmt.Sprintf("file=%s,format=qcow2,if=virtio", cfg.ImagePath),
|
"-drive", fmt.Sprintf("file=%s,format=qcow2,if=virtio,index=0", cfg.ImagePath),
|
||||||
"-netdev", fmt.Sprintf("tap,id=net0,ifname=%s,script=no,downscript=no", cfg.TapIfName),
|
"-netdev", fmt.Sprintf("tap,id=net0,ifname=%s,script=no,downscript=no", cfg.TapIfName),
|
||||||
"-device", "virtio-net-pci,netdev=net0",
|
"-device", "virtio-net-pci,netdev=net0",
|
||||||
"-qmp", fmt.Sprintf("unix:%s,server,nowait", qmpSock),
|
"-qmp", fmt.Sprintf("unix:%s,server,nowait", qmpSock),
|
||||||
|
|
|
||||||
|
|
@ -26,3 +26,4 @@ Tout cela serait lancer depuis une api:
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||

|

|
||||||
|

|
||||||
2
Home.md
2
Home.md
|
|
@ -1,4 +1,4 @@
|
||||||
# Syonad
|
# Two
|
||||||
|
|
||||||
Bienvenue sur le wiki du projet syonad _/sjɔ.nad/_
|
Bienvenue sur le wiki du projet syonad _/sjɔ.nad/_
|
||||||
|
|
||||||
|
|
|
||||||
614
images/kvm_archi.drawio.svg
Normal file
614
images/kvm_archi.drawio.svg
Normal file
|
|
@ -0,0 +1,614 @@
|
||||||
|
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="631px" height="1031px" viewBox="-0.5 -0.5 631 1031" content="<mxfile scale="1" border="10"><diagram name="Page-1" id="XOzobwXmBZjxBLjZzYqb">3VxNc+MoEP01PtoFQh/WMZOZzF62aqpy2N0jsYitWllSZOzY8+sXLLClBn/ElmRqa6oS0QIJXj8eTYvMiDwvtz8rWi7+LBKWjTyUbEfk+8jzSCh+yPKuLk8jUhvmVZrUJnw0vKa/mTIiZV2nCVu1KvKiyHhato2zIs/ZjLdstKqKz3a19yJrv7Wkc2YYXmc0M61/pQlfqFF40dH+B0vnC/1mHMb1nSXVldVIVguaFJ8NE/kxIs9VUfD6arl9ZpmETuNSt3s5cffQsYrl/JoGXt1gQ7O1GpvqF9/pwVbFOk+YrI9G5NvnIuXstaQzefdTOFfYFnyZiRIWl+b7VZc2rOJs2zCp/vxkxZLxaieqqLtxqLBR5NDFzyPSoSbCooFyqCtS5d354dFHAMSFwsCOBzHwYHyBHo4JRuQyKDZMOoDENyDZbDOaj7cPRyWetkE56EMDFexbYPE7gCVwF5YYwOINCEvoLCwYIYALGRCXyGFcMMDFHxCXqYHLWzVerd9yxse7h2MDFYYMqTCx29AAlSFDqox2g6PYGFJDhpQajB0HB+gNGVJvsBnxbkSI5w48UHL8ISUHm/GvY+gA1fEHVR1LKOwUOobu+IPqjiUkbsIzZlvuAERAffxB1ccMjwU0+Wr8+z5g5PjTGc2esnSeCxsvyn42435somXdjQfTLuCyRM1OTTgo1sGgcmTGzo6hA8Q6GFSNzPDZLXQMsQ6GVCJN1JNineYOinUQDAmRGUePvJAu5Tjzt1WtsKgVWgtYnuRPL8xER769FxLEBoLhx7rQN8arfV5b1o/L7f5h+ra4msvfaSluYjSR/0RnXojsDpOP9KhsSZ6kFctNdP1CUarfWbfX5iTdNExwBP83U4fYC8JzJmmUJEdPiFe+yKwoWs2KUt7N0vxf8SthG8iHs14R5rZjLL5qDUV/B9FdxWavXcDfDdPef+PQcKKeOdKLYQ9evEcyqQrfMvZ+fFinAUpoWYID25eDTgTU3GtbHMVpOd4sO1TN8eElyiXoPc14Jb/pCcdmxcea7l9QFutK+l2ak8Ws1Nq6N+AwnogVeYLDqfx9kgRuuzuyxKNe3Je7zeTBB1uuHx5FGKBY9jDYs4ASdAGKmTMQz6AJ5fThwGCMLyNjEwevC2DMbEE9CR8OyhV06Q0UMz9gAMLy5EmeYRClvMhZGwC2TfnfEqtJoEr/KOTk9fdts7BThZOgrYRAzlh7crOkdTTChLG5sJyZUxXLKE83rPVCG3TqDb+K/Ybk4CUPUHeKAPx151WzowfMJyEf+Bt+NOe0mjNuPGnvy8PAr3Ovmc9wxb2+W+5FQVfuxQO610zI9O9e4dVqVzeKYk8bZDs8QQhrw7HxvtRq/YtVqRgmq77EGKXfNXztgM8VFuHuWASeFEX9schMXN3KIhw1eTQWW1cUnCeTKEA2NAiGYtwkGJrEcdAfwTwLwbBbBIPHsiIYR1+/CsGNWtwbwXSfuyBYSCDBpvcQzCcBJJjXH8H00dEmwZBjBDu1ofu6gsEThP0pGLElTm8jWBjiBsHu55ffXiF745b+ctXklv4+6iq3gs645ffILa87buEWt+7hFYkjGHmR/rhlWRixawsjPDgHPwffzK3DUaoeuGUmsG7lVlCvWw3dwnfxK5oOx6+pSa/IMXaBUwnkduWCZ197VC4zE0jnzIWvrIeunTswbkuQdvIXF2Ye8L2qHg8KueYUfW+gdJcH9DFUorsiKOy1IigZofu9KZFvKpFjaUi4ATykJe/eAOL+8lTkEWnIBodae7xLMfhVRCHuMwWHXTEFpr6vZYrwJ901qpWywupMl724vS5gtTie5jAYI2ggLuo+3EzcRydYe2CuJY3qGHM9uBLezFziD8RcH6Rrdfr2NHOj4FyD+5lrJnVnRb5aZwZ/bwh0jKjGwrrroz+CBgx0NCHun9GtIOdClvs4o70bZjSYl5eneHxiij9sRhMEAn64p74+aonARLtyd/7lGQ2/yus0wOmdHYyn4ksS4AfnGnxVAkTx+Gf8dfXjf4VAfvwH</diagram></mxfile>">
|
||||||
|
<defs/>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<rect x="10" y="10" width="610" height="660" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="80" y="10" width="60" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 40px; margin-left: 81px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
eth0
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="110" y="44" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
eth0
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="30" y="160" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 180px; margin-left: 31px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
vxlan-x
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="100" y="184" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
vxlan-x
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="40" y="170" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 190px; margin-left: 41px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
vxlan-x
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="110" y="194" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
vxlan-x
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="50" y="180" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 200px; margin-left: 51px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
vxlan-x
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="120" y="204" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
vxlan-x
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="60" y="190" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 210px; margin-left: 61px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
vxlan-x
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="130" y="214" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
vxlan-x
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="30" y="260" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 280px; margin-left: 31px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
br-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="100" y="284" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
br-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="40" y="270" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 290px; margin-left: 41px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
br-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="110" y="294" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
br-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="50" y="280" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 300px; margin-left: 51px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
br-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="120" y="304" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
br-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="60" y="290" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 310px; margin-left: 61px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
br-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="130" y="314" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
br-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="30" y="360" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 380px; margin-left: 31px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="100" y="384" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="40" y="370" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 390px; margin-left: 41px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="110" y="394" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="50" y="380" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 400px; margin-left: 51px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="120" y="404" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="60" y="390" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 410px; margin-left: 61px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y-ext
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="130" y="414" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y-ext
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="10" y="440" width="610" height="580" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 608px; height: 1px; padding-top: 447px; margin-left: 11px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
netns-z
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="315" y="459" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
netns-z
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="30" y="470" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 490px; margin-left: 31px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="100" y="494" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="40" y="480" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 500px; margin-left: 41px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="110" y="504" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="50" y="490" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 510px; margin-left: 51px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="120" y="514" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="60" y="500" width="140" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 520px; margin-left: 61px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
veth-subnet-y-int
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="130" y="524" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
veth-subnet-y-int
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="30" y="580" width="560" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 558px; height: 1px; padding-top: 600px; margin-left: 32px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
br-subnet-y :
|
||||||
|
<font style="font-size: 9px;">
|
||||||
|
ip 10.0.0.1/32 et 2a::1/128
|
||||||
|
</font>
|
||||||
|
<div>
|
||||||
|
<font style="font-size: 9px;">
|
||||||
|
ip route add 10.0.0.0/24 scope link dev br-subnet-y
|
||||||
|
</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font size="1">
|
||||||
|
ip -6 route add 2a::0/64 scope link dev br-subnet-y
|
||||||
|
</font>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="32" y="604" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px">
|
||||||
|
br-subnet-y : ip 10.0.0.1/32 et 2a::1/128...
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="30" y="670" width="290" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 288px; height: 1px; padding-top: 690px; margin-left: 32px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
tap-vm
|
||||||
|
<font style="font-size: 9px;">
|
||||||
|
-> filtrage bloquant pour le dhcp et le 169.254.168.254
|
||||||
|
</font>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="32" y="694" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px">
|
||||||
|
tap-vm -> filtrage bloquant pour le dhcp et le...
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="30" y="740" width="120" height="50" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 765px; margin-left: 31px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
qemu
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="90" y="769" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
qemu
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="160" y="740" width="60" height="20" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 750px; margin-left: 161px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
metadata
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="190" y="754" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
metadata
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="230" y="740" width="60" height="20" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 750px; margin-left: 231px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
dhcp
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="260" y="754" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
dhcp
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 90 740 L 90 710" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 190 740 L 190 710" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 260 740 L 259.68 710.04" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 80.75 669.8 L 80.96 619.8" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 121.28 579.68 L 120.9 539.68" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 122.54 470.32 L 121.88 430" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 115.54 360 L 115.58 330.12" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 112.88 260.04 L 112.92 230.12" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="284" y="170" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 285px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
agent
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="344" y="204" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
agent
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="440" y="170" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 441px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
frr
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="500" y="204" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
frr
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 87.68 160.32 L 87.32 69.64" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 344 170 L 344 130 Q 344 120 334 120 L 120 120 Q 110 120 110 110 L 110 70" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 500 170 L 500 110 Q 500 100 490 100 L 135 100 Q 125 100 125 90 L 125 70" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="284" y="250" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g transform="translate(-0.5 -0.5)">
|
||||||
|
<switch>
|
||||||
|
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 280px; margin-left: 285px;">
|
||||||
|
<div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; ">
|
||||||
|
<div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||||
|
consul
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</foreignObject>
|
||||||
|
<text x="344" y="284" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">
|
||||||
|
consul
|
||||||
|
</text>
|
||||||
|
</switch>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path d="M 284 280 L 240 280 Q 230 280 230 270 L 230 150 Q 230 140 220 140 L 105 140 Q 95 140 95 130 L 95 70" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<switch>
|
||||||
|
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
|
||||||
|
<a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank">
|
||||||
|
<text text-anchor="middle" font-size="10px" x="50%" y="100%">
|
||||||
|
Text is not SVG - cannot display
|
||||||
|
</text>
|
||||||
|
</a>
|
||||||
|
</switch>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 47 KiB |
Loading…
Add table
Add a link
Reference in a new issue