Files
Xen-Orchestra-xen-orchestra…/packages/xo-server-sdn-controller
MlssFrncJrg 7985244daf feat: technical release (#10677)
* feat(@vates/iscsi): 0.4.0

* feat(@vates/types): 2.5.0

* feat(@xen-orchestra/backups): 0.78.0

* feat(@xen-orchestra/backups-cli): 1.1.18

* feat(@xen-orchestra/disk-cli): 2.2.5

* feat(@xen-orchestra/immutable-backups): 3.0.9

* feat(@xen-orchestra/web-core): 0.65.0

* feat(@xen-orchestra/mixins): 0.23.0

* feat(@xen-orchestra/proxy): 0.34.0

* feat(@xen-orchestra/vmware-explorer): 1.2.0

* feat(@xen-orchestra/qa-test): 1.4.0

* feat(@xen-orchestra/rest-api): 0.41.1

* feat(@xen-orchestra/web): 0.65.0

* feat(xo-server): 5.213.0

* feat(xo-server-sdn-controller): 1.6.0

* feat(xo-web): 5.208.0

* chore(CHANGELOG): update next
2026-10-28 16:02:08 +01:00
..
2026-10-28 16:02:08 +01:00

xo-server-sdn-controller

Creates pool-wide and cross-pool private networks

Usage

XO Server plugin that allows the creation of pool-wide and cross-pool private networks, a bit similar to XenServer's DVCS.

Please see the plugin's official documentation.

Features

  • create pool-wide or cross-pool private networks
  • add OpenFlow rules to VMs

Architecture

  • private-network: logic for private networks
  • protocol:
    • openflow-channel.js: manages OpenFlow rules
    • ovsdb-client.js: manages private networks
  • utils/tls-helper.js: small class to create connections using TLS

Rest Routes

Some rest api routes are undocumented in the swagger, here is how to use them :

Creates a new rule POST /vifs/{id}/actions/add_traffic_rule :

Fields

Field Type Required Description
allow string (boolean-like) Yes Indicates whether the rule allows or denies traffic. Expected values: "true" or "false".
direction string Yes Traffic direction the rule applies to. Values: "from", "to", "both".
ipRange string Yes IP address or range. Example: "111.168.1.2" or "111.168.1.0/24".
port string No Port or port range. Empty string means all ports. Example: "80" or "1000-2000".
protocol string Yes Network protocol. Common values: "TCP", "UDP", "IP" (any protocol).
priority number No OpenFlow priority, 0 to 65535, unique on the network, highest first. XAPI plugin only.

Deletes a new rule POST /vifs/{id}/actions/delete_traffic_rule :

Fields

Field Type Required Description
direction string Yes Traffic direction the rule applies to. Values: "from", "to", "both".
ipRange string Yes IP address or range. Example: "111.168.1.2" or "111.168.1.0/24".
port string No Port or port range. Empty string means all ports. Example: "80" or "1000-2000".
protocol string Yes Network protocol. Common values: "TCP", "UDP", "IP" (any protocol).
priority number No The priority of the rule, required when it has one.

Creates a new rule at network level POST /networks/{id}/actions/add_traffic_rule :

Fields

Field Type Required Description
allow string (boolean-like) Yes Indicates whether the rule allows or denies traffic. Expected values: "true" or "false".
direction string Yes Traffic direction the rule applies to. Values: "from", "to", "both".
ipRange string Yes IP address or range. Example: "111.168.1.2" or "111.168.1.0/24".
port string No Port or port range. Empty string means all ports. Example: "80" or "1000-2000".
protocol string Yes Network protocol. Common values: "TCP", "UDP", "IP" (any protocol).
priority number No OpenFlow priority, 0 to 65535, unique on the network, highest first. XAPI plugin only.

Deletes a new rule at network level POST /networks/{id}/actions/delete_traffic_rule :

Fields

Field Type Required Description
direction string Yes Traffic direction the rule applies to. Values: "from", "to", "both".
ipRange string Yes IP address or range. Example: "111.168.1.2" or "111.168.1.0/24".
port string No Port or port range. Empty string means all ports. Example: "80" or "1000-2000".
protocol string Yes Network protocol. Common values: "TCP", "UDP", "IP" (any protocol).
priority number No The priority of the rule, required when it has one.

Updates a rule at VIF or network level POST /vifs/{id}/actions/update_traffic_rule : POST /networks/{id}/actions/update_traffic_rule :

Fields

Field Type Required Description
oldRule object Yes Rule to update: allow, direction, ipRange, protocol, port and priority, if set.
newRule object Yes Fields to change, priority included. null removes the port.

Contributions

Contributions are very welcomed, either on the documentation or on the code.

You may:

  • report any issue you've encountered;
  • fork and create a pull request.

License

AGPL-3.0-or-later © Vates SAS