|
Open vSwitch CI |
fe1a04 |
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
|
|
Open vSwitch CI |
fe1a04 |
index 3e5136fd4e..dd29a4182d 100755
|
|
Open vSwitch CI |
fe1a04 |
--- a/.ci/linux-build.sh
|
|
Open vSwitch CI |
fe1a04 |
+++ b/.ci/linux-build.sh
|
|
Open vSwitch CI |
fe1a04 |
@@ -235,7 +235,7 @@ if [ "$TESTSUITE" ]; then
|
|
Open vSwitch CI |
fe1a04 |
configure_ovs
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
export DISTCHECK_CONFIGURE_FLAGS="$OPTS"
|
|
Open vSwitch CI |
fe1a04 |
- if ! make distcheck CFLAGS="${CFLAGS_FOR_OVS}" \
|
|
Open vSwitch CI |
fe1a04 |
+ if ! make distcheck -j4 CFLAGS="${CFLAGS_FOR_OVS}" \
|
|
Open vSwitch CI |
fe1a04 |
TESTSUITEFLAGS=-j4 RECHECK=yes; then
|
|
Open vSwitch CI |
fe1a04 |
# testsuite.log is necessary for debugging.
|
|
Open vSwitch CI |
fe1a04 |
cat */_build/sub/tests/testsuite.log
|
|
Open vSwitch CI |
daaf06 |
diff --git a/Documentation/topics/dpdk/pmd.rst b/Documentation/topics/dpdk/pmd.rst
|
|
Open vSwitch CI |
daaf06 |
index caa7d97bef..e481e79414 100644
|
|
Open vSwitch CI |
daaf06 |
--- a/Documentation/topics/dpdk/pmd.rst
|
|
Open vSwitch CI |
daaf06 |
+++ b/Documentation/topics/dpdk/pmd.rst
|
|
Open vSwitch CI |
daaf06 |
@@ -239,7 +239,9 @@ If not set, the default variance improvement threshold is 25%.
|
|
Open vSwitch CI |
daaf06 |
|
|
Open vSwitch CI |
daaf06 |
PMD Auto Load Balancing doesn't currently work if queues are assigned
|
|
Open vSwitch CI |
daaf06 |
cross NUMA as actual processing load could get worse after assignment
|
|
Open vSwitch CI |
daaf06 |
- as compared to what dry run predicts.
|
|
Open vSwitch CI |
daaf06 |
+ as compared to what dry run predicts. The only exception is when all
|
|
Open vSwitch CI |
daaf06 |
+ PMD threads are running on cores from a single NUMA node. In this case
|
|
Open vSwitch CI |
daaf06 |
+ Auto Load Balancing is still possible.
|
|
Open vSwitch CI |
daaf06 |
|
|
Open vSwitch CI |
daaf06 |
The minimum time between 2 consecutive PMD auto load balancing iterations can
|
|
Open vSwitch CI |
daaf06 |
also be configured by::
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/Documentation/topics/dpdk/qos.rst b/Documentation/topics/dpdk/qos.rst
|
|
Open vSwitch CI |
fe1a04 |
index 103495415a..a98ec672fc 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/Documentation/topics/dpdk/qos.rst
|
|
Open vSwitch CI |
fe1a04 |
+++ b/Documentation/topics/dpdk/qos.rst
|
|
Open vSwitch CI |
fe1a04 |
@@ -69,22 +69,24 @@ to prioritize certain traffic over others at a port level.
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
For example, the following configuration will limit the traffic rate at a
|
|
Open vSwitch CI |
fe1a04 |
port level to a maximum of 2000 packets a second (64 bytes IPv4 packets).
|
|
Open vSwitch CI |
fe1a04 |
-100pps as CIR (Committed Information Rate) and 1000pps as EIR (Excess
|
|
Open vSwitch CI |
fe1a04 |
-Information Rate). High priority traffic is routed to queue 10, which marks
|
|
Open vSwitch CI |
fe1a04 |
+1000pps as CIR (Committed Information Rate) and 1000pps as EIR (Excess
|
|
Open vSwitch CI |
fe1a04 |
+Information Rate). CIR and EIR are measured in bytes without Ethernet header.
|
|
Open vSwitch CI |
fe1a04 |
+As a result, 1000pps means (64-byte - 14-byte) * 1000 = 50,000 in the
|
|
Open vSwitch CI |
fe1a04 |
+configuration below. High priority traffic is routed to queue 10, which marks
|
|
Open vSwitch CI |
fe1a04 |
all traffic as CIR, i.e. Green. All low priority traffic, queue 20, is
|
|
Open vSwitch CI |
fe1a04 |
marked as EIR, i.e. Yellow::
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
$ ovs-vsctl --timeout=5 set port dpdk1 qos=@myqos -- \
|
|
Open vSwitch CI |
fe1a04 |
--id=@myqos create qos type=trtcm-policer \
|
|
Open vSwitch CI |
fe1a04 |
- other-config:cir=52000 other-config:cbs=2048 \
|
|
Open vSwitch CI |
fe1a04 |
- other-config:eir=52000 other-config:ebs=2048 \
|
|
Open vSwitch CI |
fe1a04 |
+ other-config:cir=50000 other-config:cbs=2048 \
|
|
Open vSwitch CI |
fe1a04 |
+ other-config:eir=50000 other-config:ebs=2048 \
|
|
Open vSwitch CI |
fe1a04 |
queues:10=@dpdk1Q10 queues:20=@dpdk1Q20 -- \
|
|
Open vSwitch CI |
fe1a04 |
--id=@dpdk1Q10 create queue \
|
|
Open vSwitch CI |
fe1a04 |
- other-config:cir=41600000 other-config:cbs=2048 \
|
|
Open vSwitch CI |
fe1a04 |
+ other-config:cir=100000 other-config:cbs=2048 \
|
|
Open vSwitch CI |
fe1a04 |
other-config:eir=0 other-config:ebs=0 -- \
|
|
Open vSwitch CI |
fe1a04 |
--id=@dpdk1Q20 create queue \
|
|
Open vSwitch CI |
fe1a04 |
other-config:cir=0 other-config:cbs=0 \
|
|
Open vSwitch CI |
fe1a04 |
- other-config:eir=41600000 other-config:ebs=2048 \
|
|
Open vSwitch CI |
fe1a04 |
+ other-config:eir=50000 other-config:ebs=2048
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
This configuration accomplishes that the high priority traffic has a
|
|
Open vSwitch CI |
fe1a04 |
guaranteed bandwidth egressing the ports at CIR (1000pps), but it can also
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/NEWS b/NEWS
|
|
Open vSwitch CI |
fe1a04 |
index bc901efdb1..036d4032c4 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/NEWS
|
|
Open vSwitch CI |
fe1a04 |
+++ b/NEWS
|
|
Open vSwitch CI |
fe1a04 |
@@ -1,3 +1,11 @@
|
|
Open vSwitch CI |
fe1a04 |
+v2.15.1 - xx xxx xxxx
|
|
Open vSwitch CI |
fe1a04 |
+---------------------
|
|
Open vSwitch CI |
fe1a04 |
+ - ovs-ctl:
|
|
Open vSwitch CI |
fe1a04 |
+ * New option '--no-record-hostname' to disable hostname configuration
|
|
Open vSwitch CI |
fe1a04 |
+ in ovsdb on startup.
|
|
Open vSwitch CI |
fe1a04 |
+ * New command 'record-hostname-if-not-set' to update hostname in ovsdb.
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
v2.15.0 - 15 Feb 2021
|
|
Open vSwitch CI |
fe1a04 |
---------------------
|
|
Open vSwitch CI |
fe1a04 |
- OVSDB:
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/configure.ac b/configure.ac
|
|
Open vSwitch CI |
fe1a04 |
index fd82d7d270..9299342960 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/configure.ac
|
|
Open vSwitch CI |
fe1a04 |
+++ b/configure.ac
|
|
Open vSwitch CI |
fe1a04 |
@@ -13,7 +13,7 @@
|
|
Open vSwitch CI |
fe1a04 |
# limitations under the License.
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
AC_PREREQ(2.63)
|
|
Open vSwitch CI |
fe1a04 |
-AC_INIT(openvswitch, 2.15.0, bugs@openvswitch.org)
|
|
Open vSwitch CI |
fe1a04 |
+AC_INIT(openvswitch, 2.15.1, bugs@openvswitch.org)
|
|
Open vSwitch CI |
fe1a04 |
AC_CONFIG_SRCDIR([datapath/datapath.c])
|
|
Open vSwitch CI |
fe1a04 |
AC_CONFIG_MACRO_DIR([m4])
|
|
Open vSwitch CI |
fe1a04 |
AC_CONFIG_AUX_DIR([build-aux])
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/debian/changelog b/debian/changelog
|
|
Open vSwitch CI |
fe1a04 |
index 1f2b7a3668..8b5d075840 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/debian/changelog
|
|
Open vSwitch CI |
fe1a04 |
+++ b/debian/changelog
|
|
Open vSwitch CI |
fe1a04 |
@@ -1,3 +1,9 @@
|
|
Open vSwitch CI |
fe1a04 |
+openvswitch (2.15.1-1) unstable; urgency=low
|
|
Open vSwitch CI |
fe1a04 |
+ [ Open vSwitch team ]
|
|
Open vSwitch CI |
fe1a04 |
+ * New upstream version
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+ -- Open vSwitch team <dev@openvswitch.org> Mon, 15 Feb 2021 17:35:33 +0100
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
openvswitch (2.15.0-1) unstable; urgency=low
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
* New upstream version
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
|
|
Open vSwitch CI |
daaf06 |
index 4381c618f1..94cc9b80c5 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/lib/dpif-netdev.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/lib/dpif-netdev.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -3834,6 +3834,15 @@ dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put)
|
|
Open vSwitch CI |
fe1a04 |
return error;
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+ if (match.wc.masks.in_port.odp_port != ODPP_NONE) {
|
|
Open vSwitch CI |
fe1a04 |
+ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+ VLOG_ERR_RL(&rl, "failed to put%s flow: in_port is not an exact match",
|
|
Open vSwitch CI |
fe1a04 |
+ (put->flags & DPIF_FP_CREATE) ? "[create]"
|
|
Open vSwitch CI |
fe1a04 |
+ : (put->flags & DPIF_FP_MODIFY) ? "[modify]" : "[zero]");
|
|
Open vSwitch CI |
fe1a04 |
+ return EINVAL;
|
|
Open vSwitch CI |
fe1a04 |
+ }
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
if (put->ufid) {
|
|
Open vSwitch CI |
fe1a04 |
ufid = *put->ufid;
|
|
Open vSwitch CI |
fe1a04 |
} else {
|
|
Open vSwitch CI |
daaf06 |
@@ -4878,6 +4887,12 @@ struct rr_numa {
|
|
Open vSwitch CI |
daaf06 |
bool idx_inc;
|
|
Open vSwitch CI |
daaf06 |
};
|
|
Open vSwitch CI |
daaf06 |
|
|
Open vSwitch CI |
daaf06 |
+static size_t
|
|
Open vSwitch CI |
daaf06 |
+rr_numa_list_count(struct rr_numa_list *rr)
|
|
Open vSwitch CI |
daaf06 |
+{
|
|
Open vSwitch CI |
daaf06 |
+ return hmap_count(&rr->numas);
|
|
Open vSwitch CI |
daaf06 |
+}
|
|
Open vSwitch CI |
daaf06 |
+
|
|
Open vSwitch CI |
daaf06 |
static struct rr_numa *
|
|
Open vSwitch CI |
daaf06 |
rr_numa_list_lookup(struct rr_numa_list *rr, int numa_id)
|
|
Open vSwitch CI |
daaf06 |
{
|
|
Open vSwitch CI |
daaf06 |
@@ -5590,10 +5605,17 @@ get_dry_run_variance(struct dp_netdev *dp, uint32_t *core_list,
|
|
Open vSwitch CI |
daaf06 |
for (int i = 0; i < n_rxqs; i++) {
|
|
Open vSwitch CI |
daaf06 |
int numa_id = netdev_get_numa_id(rxqs[i]->port->netdev);
|
|
Open vSwitch CI |
daaf06 |
numa = rr_numa_list_lookup(&rr, numa_id);
|
|
Open vSwitch CI |
daaf06 |
+ /* If there is no available pmd on the local numa but there is only one
|
|
Open vSwitch CI |
daaf06 |
+ * numa for cross-numa polling, we can estimate the dry run. */
|
|
Open vSwitch CI |
daaf06 |
+ if (!numa && rr_numa_list_count(&rr) == 1) {
|
|
Open vSwitch CI |
daaf06 |
+ numa = rr_numa_list_next(&rr, NULL);
|
|
Open vSwitch CI |
daaf06 |
+ }
|
|
Open vSwitch CI |
daaf06 |
if (!numa) {
|
|
Open vSwitch CI |
daaf06 |
- /* Abort if cross NUMA polling. */
|
|
Open vSwitch CI |
daaf06 |
- VLOG_DBG("PMD auto lb dry run."
|
|
Open vSwitch CI |
daaf06 |
- " Aborting due to cross-numa polling.");
|
|
Open vSwitch CI |
daaf06 |
+ VLOG_DBG("PMD auto lb dry run: "
|
|
Open vSwitch CI |
daaf06 |
+ "There's no available (non-isolated) PMD thread on NUMA "
|
|
Open vSwitch CI |
daaf06 |
+ "node %d for port '%s' and there are PMD threads on more "
|
|
Open vSwitch CI |
daaf06 |
+ "than one NUMA node available for cross-NUMA polling. "
|
|
Open vSwitch CI |
daaf06 |
+ "Aborting.", numa_id, netdev_rxq_get_name(rxqs[i]->rx));
|
|
Open vSwitch CI |
daaf06 |
goto cleanup;
|
|
Open vSwitch CI |
daaf06 |
}
|
|
Open vSwitch CI |
daaf06 |
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
|
|
Open vSwitch CI |
fe1a04 |
index 6be23dbeed..15b25084b3 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/lib/netdev-linux.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/lib/netdev-linux.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -1255,21 +1255,21 @@ netdev_linux_batch_rxq_recv_sock(struct netdev_rxq_linux *rx, int mtu,
|
|
Open vSwitch CI |
fe1a04 |
* aux_buf is allocated so that it can be prepended to TSO buffer. */
|
|
Open vSwitch CI |
fe1a04 |
std_len = virtio_net_hdr_size + VLAN_ETH_HEADER_LEN + mtu;
|
|
Open vSwitch CI |
fe1a04 |
for (i = 0; i < NETDEV_MAX_BURST; i++) {
|
|
Open vSwitch CI |
fe1a04 |
- buffers[i] = dp_packet_new_with_headroom(std_len, DP_NETDEV_HEADROOM);
|
|
Open vSwitch CI |
fe1a04 |
- iovs[i][IOV_PACKET].iov_base = dp_packet_data(buffers[i]);
|
|
Open vSwitch CI |
fe1a04 |
- iovs[i][IOV_PACKET].iov_len = std_len;
|
|
Open vSwitch CI |
fe1a04 |
- if (iovlen == IOV_TSO_SIZE) {
|
|
Open vSwitch CI |
fe1a04 |
- iovs[i][IOV_AUXBUF].iov_base = dp_packet_data(rx->aux_bufs[i]);
|
|
Open vSwitch CI |
fe1a04 |
- iovs[i][IOV_AUXBUF].iov_len = dp_packet_tailroom(rx->aux_bufs[i]);
|
|
Open vSwitch CI |
fe1a04 |
- }
|
|
Open vSwitch CI |
fe1a04 |
+ buffers[i] = dp_packet_new_with_headroom(std_len, DP_NETDEV_HEADROOM);
|
|
Open vSwitch CI |
fe1a04 |
+ iovs[i][IOV_PACKET].iov_base = dp_packet_data(buffers[i]);
|
|
Open vSwitch CI |
fe1a04 |
+ iovs[i][IOV_PACKET].iov_len = std_len;
|
|
Open vSwitch CI |
fe1a04 |
+ if (iovlen == IOV_TSO_SIZE) {
|
|
Open vSwitch CI |
fe1a04 |
+ iovs[i][IOV_AUXBUF].iov_base = dp_packet_data(rx->aux_bufs[i]);
|
|
Open vSwitch CI |
fe1a04 |
+ iovs[i][IOV_AUXBUF].iov_len = dp_packet_tailroom(rx->aux_bufs[i]);
|
|
Open vSwitch CI |
fe1a04 |
+ }
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
- mmsgs[i].msg_hdr.msg_name = NULL;
|
|
Open vSwitch CI |
fe1a04 |
- mmsgs[i].msg_hdr.msg_namelen = 0;
|
|
Open vSwitch CI |
fe1a04 |
- mmsgs[i].msg_hdr.msg_iov = iovs[i];
|
|
Open vSwitch CI |
fe1a04 |
- mmsgs[i].msg_hdr.msg_iovlen = iovlen;
|
|
Open vSwitch CI |
fe1a04 |
- mmsgs[i].msg_hdr.msg_control = &cmsg_buffers[i];
|
|
Open vSwitch CI |
fe1a04 |
- mmsgs[i].msg_hdr.msg_controllen = sizeof cmsg_buffers[i];
|
|
Open vSwitch CI |
fe1a04 |
- mmsgs[i].msg_hdr.msg_flags = 0;
|
|
Open vSwitch CI |
fe1a04 |
+ mmsgs[i].msg_hdr.msg_name = NULL;
|
|
Open vSwitch CI |
fe1a04 |
+ mmsgs[i].msg_hdr.msg_namelen = 0;
|
|
Open vSwitch CI |
fe1a04 |
+ mmsgs[i].msg_hdr.msg_iov = iovs[i];
|
|
Open vSwitch CI |
fe1a04 |
+ mmsgs[i].msg_hdr.msg_iovlen = iovlen;
|
|
Open vSwitch CI |
fe1a04 |
+ mmsgs[i].msg_hdr.msg_control = &cmsg_buffers[i];
|
|
Open vSwitch CI |
fe1a04 |
+ mmsgs[i].msg_hdr.msg_controllen = sizeof cmsg_buffers[i];
|
|
Open vSwitch CI |
fe1a04 |
+ mmsgs[i].msg_hdr.msg_flags = 0;
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
do {
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c
|
|
Open vSwitch CI |
fe1a04 |
index e2e829772a..0342a228b7 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/lib/ofp-actions.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/lib/ofp-actions.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -4431,6 +4431,7 @@ decode_NXAST_RAW_ENCAP(const struct nx_action_encap *nae,
|
|
Open vSwitch CI |
fe1a04 |
{
|
|
Open vSwitch CI |
fe1a04 |
struct ofpact_encap *encap;
|
|
Open vSwitch CI |
fe1a04 |
const struct ofp_ed_prop_header *ofp_prop;
|
|
Open vSwitch CI |
fe1a04 |
+ const size_t encap_ofs = out->size;
|
|
Open vSwitch CI |
fe1a04 |
size_t props_len;
|
|
Open vSwitch CI |
fe1a04 |
uint16_t n_props = 0;
|
|
Open vSwitch CI |
fe1a04 |
int err;
|
|
Open vSwitch CI |
fe1a04 |
@@ -4458,6 +4459,7 @@ decode_NXAST_RAW_ENCAP(const struct nx_action_encap *nae,
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
n_props++;
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
+ encap = ofpbuf_at_assert(out, encap_ofs, sizeof *encap);
|
|
Open vSwitch CI |
fe1a04 |
encap->n_props = n_props;
|
|
Open vSwitch CI |
fe1a04 |
out->header = &encap->ofpact;
|
|
Open vSwitch CI |
fe1a04 |
ofpact_finish_ENCAP(out, &encap);
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/lib/ovsdb-cs.c b/lib/ovsdb-cs.c
|
|
Open vSwitch CI |
fe1a04 |
index ff8adaefb5..6f9f912ac4 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/lib/ovsdb-cs.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/lib/ovsdb-cs.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -1367,7 +1367,7 @@ ovsdb_cs_send_transaction(struct ovsdb_cs *cs, struct json *operations)
|
|
Open vSwitch CI |
fe1a04 |
sizeof *cs->txns);
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
cs->txns[cs->n_txns++] = request_id;
|
|
Open vSwitch CI |
fe1a04 |
- return request_id;
|
|
Open vSwitch CI |
fe1a04 |
+ return json_clone(request_id);
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
/* Makes 'cs' drop its record of transaction 'request_id'. If a reply arrives
|
|
Open vSwitch CI |
fe1a04 |
@@ -1380,6 +1380,7 @@ ovsdb_cs_forget_transaction(struct ovsdb_cs *cs, const struct json *request_id)
|
|
Open vSwitch CI |
fe1a04 |
{
|
|
Open vSwitch CI |
fe1a04 |
for (size_t i = 0; i < cs->n_txns; i++) {
|
|
Open vSwitch CI |
fe1a04 |
if (json_equal(request_id, cs->txns[i])) {
|
|
Open vSwitch CI |
fe1a04 |
+ json_destroy(cs->txns[i]);
|
|
Open vSwitch CI |
fe1a04 |
cs->txns[i] = cs->txns[--cs->n_txns];
|
|
Open vSwitch CI |
fe1a04 |
return true;
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
|
|
Open vSwitch CI |
fe1a04 |
index 9c5c633b41..fa8f6cd0e8 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/ofproto/connmgr.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/ofproto/connmgr.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -2140,7 +2140,7 @@ ofmonitor_report(struct connmgr *mgr, struct rule *rule,
|
|
Open vSwitch CI |
fe1a04 |
const struct rule_actions *old_actions)
|
|
Open vSwitch CI |
fe1a04 |
OVS_REQUIRES(ofproto_mutex)
|
|
Open vSwitch CI |
fe1a04 |
{
|
|
Open vSwitch CI |
fe1a04 |
- if (rule_is_hidden(rule)) {
|
|
Open vSwitch CI |
fe1a04 |
+ if (!mgr || rule_is_hidden(rule)) {
|
|
Open vSwitch CI |
fe1a04 |
return;
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
@@ -2244,6 +2244,10 @@ ofmonitor_flush(struct connmgr *mgr)
|
|
Open vSwitch CI |
fe1a04 |
{
|
|
Open vSwitch CI |
fe1a04 |
struct ofconn *ofconn;
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+ if (!mgr) {
|
|
Open vSwitch CI |
fe1a04 |
+ return;
|
|
Open vSwitch CI |
fe1a04 |
+ }
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
LIST_FOR_EACH (ofconn, connmgr_node, &mgr->conns) {
|
|
Open vSwitch CI |
fe1a04 |
struct rconn_packet_counter *counter = ofconn->monitor_counter;
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
|
|
Open vSwitch CI |
fe1a04 |
index 5fae46adfc..ccf97266c0 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/ofproto/ofproto-dpif-upcall.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/ofproto/ofproto-dpif-upcall.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -491,6 +491,11 @@ udpif_destroy(struct udpif *udpif)
|
|
Open vSwitch CI |
fe1a04 |
dpif_register_upcall_cb(udpif->dpif, NULL, udpif);
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
for (int i = 0; i < N_UMAPS; i++) {
|
|
Open vSwitch CI |
fe1a04 |
+ struct udpif_key *ukey;
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+ CMAP_FOR_EACH (ukey, cmap_node, &udpif->ukeys[i].cmap) {
|
|
Open vSwitch CI |
fe1a04 |
+ ukey_delete__(ukey);
|
|
Open vSwitch CI |
fe1a04 |
+ }
|
|
Open vSwitch CI |
fe1a04 |
cmap_destroy(&udpif->ukeys[i].cmap);
|
|
Open vSwitch CI |
fe1a04 |
ovs_mutex_destroy(&udpif->ukeys[i].mutex);
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c
|
|
Open vSwitch CI |
fe1a04 |
index 72756eb1f2..ba28e36d78 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/ovsdb/ovsdb-client.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/ovsdb/ovsdb-client.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -1664,14 +1664,15 @@ static void
|
|
Open vSwitch CI |
fe1a04 |
do_needs_conversion(struct jsonrpc *rpc, const char *database_ OVS_UNUSED,
|
|
Open vSwitch CI |
fe1a04 |
int argc OVS_UNUSED, char *argv[])
|
|
Open vSwitch CI |
fe1a04 |
{
|
|
Open vSwitch CI |
fe1a04 |
+ const char *schema_file_name = argv[argc - 1];
|
|
Open vSwitch CI |
fe1a04 |
struct ovsdb_schema *schema1;
|
|
Open vSwitch CI |
fe1a04 |
- check_ovsdb_error(ovsdb_schema_from_file(argv[0], &schema1));
|
|
Open vSwitch CI |
fe1a04 |
+ check_ovsdb_error(ovsdb_schema_from_file(schema_file_name, &schema1));
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
char *database = schema1->name;
|
|
Open vSwitch CI |
fe1a04 |
open_rpc(1, NEED_DATABASE, argc, argv, &rpc, &database);
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
if (is_database_clustered(rpc, database)) {
|
|
Open vSwitch CI |
fe1a04 |
- ovsdb_schema_persist_ephemeral_columns(schema1, argv[0]);
|
|
Open vSwitch CI |
fe1a04 |
+ ovsdb_schema_persist_ephemeral_columns(schema1, schema_file_name);
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
struct ovsdb_schema *schema2 = fetch_schema(rpc, schema1->name);
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/ovsdb/raft.c b/ovsdb/raft.c
|
|
Open vSwitch CI |
fe1a04 |
index ea91d1fdba..192f7f0a96 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/ovsdb/raft.c
|
|
Open vSwitch CI |
fe1a04 |
+++ b/ovsdb/raft.c
|
|
Open vSwitch CI |
fe1a04 |
@@ -940,6 +940,34 @@ raft_reset_ping_timer(struct raft *raft)
|
|
Open vSwitch CI |
fe1a04 |
raft->ping_timeout = time_msec() + raft->election_timer / 3;
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+static void
|
|
Open vSwitch CI |
fe1a04 |
+raft_conn_update_probe_interval(struct raft *raft, struct raft_conn *r_conn)
|
|
Open vSwitch CI |
fe1a04 |
+{
|
|
Open vSwitch CI |
fe1a04 |
+ /* Inactivity probe will be sent if connection will remain idle for the
|
|
Open vSwitch CI |
fe1a04 |
+ * time of an election timeout. Connection will be dropped if inactivity
|
|
Open vSwitch CI |
fe1a04 |
+ * will last twice that time.
|
|
Open vSwitch CI |
fe1a04 |
+ *
|
|
Open vSwitch CI |
fe1a04 |
+ * It's not enough to just have heartbeats if connection is still
|
|
Open vSwitch CI |
fe1a04 |
+ * established, but no packets received from the other side. Without
|
|
Open vSwitch CI |
fe1a04 |
+ * inactivity probe follower will just try to initiate election
|
|
Open vSwitch CI |
fe1a04 |
+ * indefinitely staying in 'candidate' role. And the leader will continue
|
|
Open vSwitch CI |
fe1a04 |
+ * to send heartbeats to the dead connection thinking that remote server
|
|
Open vSwitch CI |
fe1a04 |
+ * is still part of the cluster. */
|
|
Open vSwitch CI |
fe1a04 |
+ int probe_interval = raft->election_timer + ELECTION_RANGE_MSEC;
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+ jsonrpc_session_set_probe_interval(r_conn->js, probe_interval);
|
|
Open vSwitch CI |
fe1a04 |
+}
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+static void
|
|
Open vSwitch CI |
fe1a04 |
+raft_update_probe_intervals(struct raft *raft)
|
|
Open vSwitch CI |
fe1a04 |
+{
|
|
Open vSwitch CI |
fe1a04 |
+ struct raft_conn *r_conn;
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+ LIST_FOR_EACH (r_conn, list_node, &raft->conns) {
|
|
Open vSwitch CI |
fe1a04 |
+ raft_conn_update_probe_interval(raft, r_conn);
|
|
Open vSwitch CI |
fe1a04 |
+ }
|
|
Open vSwitch CI |
fe1a04 |
+}
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
static void
|
|
Open vSwitch CI |
fe1a04 |
raft_add_conn(struct raft *raft, struct jsonrpc_session *js,
|
|
Open vSwitch CI |
fe1a04 |
const struct uuid *sid, bool incoming)
|
|
Open vSwitch CI |
fe1a04 |
@@ -954,7 +982,7 @@ raft_add_conn(struct raft *raft, struct jsonrpc_session *js,
|
|
Open vSwitch CI |
fe1a04 |
&conn->sid);
|
|
Open vSwitch CI |
fe1a04 |
conn->incoming = incoming;
|
|
Open vSwitch CI |
fe1a04 |
conn->js_seqno = jsonrpc_session_get_seqno(conn->js);
|
|
Open vSwitch CI |
fe1a04 |
- jsonrpc_session_set_probe_interval(js, 0);
|
|
Open vSwitch CI |
fe1a04 |
+ raft_conn_update_probe_interval(raft, conn);
|
|
Open vSwitch CI |
fe1a04 |
jsonrpc_session_set_backlog_threshold(js, raft->conn_backlog_max_n_msgs,
|
|
Open vSwitch CI |
fe1a04 |
raft->conn_backlog_max_n_bytes);
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
@@ -2804,6 +2832,7 @@ raft_update_commit_index(struct raft *raft, uint64_t new_commit_index)
|
|
Open vSwitch CI |
fe1a04 |
raft->election_timer, e->election_timer);
|
|
Open vSwitch CI |
fe1a04 |
raft->election_timer = e->election_timer;
|
|
Open vSwitch CI |
fe1a04 |
raft->election_timer_new = 0;
|
|
Open vSwitch CI |
fe1a04 |
+ raft_update_probe_intervals(raft);
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
if (e->servers) {
|
|
Open vSwitch CI |
fe1a04 |
/* raft_run_reconfigure() can write a new Raft entry, which can
|
|
Open vSwitch CI |
fe1a04 |
@@ -2820,6 +2849,7 @@ raft_update_commit_index(struct raft *raft, uint64_t new_commit_index)
|
|
Open vSwitch CI |
fe1a04 |
VLOG_INFO("Election timer changed from %"PRIu64" to %"PRIu64,
|
|
Open vSwitch CI |
fe1a04 |
raft->election_timer, e->election_timer);
|
|
Open vSwitch CI |
fe1a04 |
raft->election_timer = e->election_timer;
|
|
Open vSwitch CI |
fe1a04 |
+ raft_update_probe_intervals(raft);
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
/* Check if any pending command can be completed, and complete it.
|
|
Open vSwitch CI |
fe1a04 |
@@ -4468,6 +4498,8 @@ raft_unixctl_status(struct unixctl_conn *conn,
|
|
Open vSwitch CI |
fe1a04 |
: raft->leaving ? "leaving cluster"
|
|
Open vSwitch CI |
fe1a04 |
: raft->left ? "left cluster"
|
|
Open vSwitch CI |
fe1a04 |
: raft->failed ? "failed"
|
|
Open vSwitch CI |
fe1a04 |
+ : raft->candidate_retrying
|
|
Open vSwitch CI |
fe1a04 |
+ ? "disconnected from the cluster (election timeout)"
|
|
Open vSwitch CI |
fe1a04 |
: "cluster member");
|
|
Open vSwitch CI |
fe1a04 |
if (raft->joining) {
|
|
Open vSwitch CI |
fe1a04 |
ds_put_format(&s, "Remotes for joining:");
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/python/ovs/db/idl.py b/python/ovs/db/idl.py
|
|
Open vSwitch CI |
fe1a04 |
index 5850ac7abf..4226d1cb2f 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/python/ovs/db/idl.py
|
|
Open vSwitch CI |
fe1a04 |
+++ b/python/ovs/db/idl.py
|
|
Open vSwitch CI |
fe1a04 |
@@ -12,6 +12,7 @@
|
|
Open vSwitch CI |
fe1a04 |
# See the License for the specific language governing permissions and
|
|
Open vSwitch CI |
fe1a04 |
# limitations under the License.
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+import collections
|
|
Open vSwitch CI |
fe1a04 |
import functools
|
|
Open vSwitch CI |
fe1a04 |
import uuid
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
@@ -39,6 +40,10 @@ OVSDB_UPDATE2 = 1
|
|
Open vSwitch CI |
fe1a04 |
CLUSTERED = "clustered"
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+Notice = collections.namedtuple('Notice', ('event', 'row', 'updates'))
|
|
Open vSwitch CI |
fe1a04 |
+Notice.__new__.__defaults__ = (None,) # default updates=None
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
class Idl(object):
|
|
Open vSwitch CI |
fe1a04 |
"""Open vSwitch Database Interface Definition Language (OVSDB IDL).
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
@@ -614,6 +619,7 @@ class Idl(object):
|
|
Open vSwitch CI |
fe1a04 |
raise error.Error("<table-updates> is not an object",
|
|
Open vSwitch CI |
fe1a04 |
table_updates)
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+ notices = []
|
|
Open vSwitch CI |
fe1a04 |
for table_name, table_update in table_updates.items():
|
|
Open vSwitch CI |
fe1a04 |
table = tables.get(table_name)
|
|
Open vSwitch CI |
fe1a04 |
if not table:
|
|
Open vSwitch CI |
fe1a04 |
@@ -639,7 +645,9 @@ class Idl(object):
|
|
Open vSwitch CI |
fe1a04 |
% (table_name, uuid_string))
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
if version == OVSDB_UPDATE2:
|
|
Open vSwitch CI |
fe1a04 |
- if self.__process_update2(table, uuid, row_update):
|
|
Open vSwitch CI |
fe1a04 |
+ changes = self.__process_update2(table, uuid, row_update)
|
|
Open vSwitch CI |
fe1a04 |
+ if changes:
|
|
Open vSwitch CI |
fe1a04 |
+ notices.append(changes)
|
|
Open vSwitch CI |
fe1a04 |
self.change_seqno += 1
|
|
Open vSwitch CI |
fe1a04 |
continue
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
@@ -652,17 +660,20 @@ class Idl(object):
|
|
Open vSwitch CI |
fe1a04 |
raise error.Error('<row-update> missing "old" and '
|
|
Open vSwitch CI |
fe1a04 |
'"new" members', row_update)
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
- if self.__process_update(table, uuid, old, new):
|
|
Open vSwitch CI |
fe1a04 |
+ changes = self.__process_update(table, uuid, old, new)
|
|
Open vSwitch CI |
fe1a04 |
+ if changes:
|
|
Open vSwitch CI |
fe1a04 |
+ notices.append(changes)
|
|
Open vSwitch CI |
fe1a04 |
self.change_seqno += 1
|
|
Open vSwitch CI |
fe1a04 |
+ for notice in notices:
|
|
Open vSwitch CI |
fe1a04 |
+ self.notify(*notice)
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
def __process_update2(self, table, uuid, row_update):
|
|
Open vSwitch CI |
fe1a04 |
+ """Returns Notice if a column changed, False otherwise."""
|
|
Open vSwitch CI |
fe1a04 |
row = table.rows.get(uuid)
|
|
Open vSwitch CI |
fe1a04 |
- changed = False
|
|
Open vSwitch CI |
fe1a04 |
if "delete" in row_update:
|
|
Open vSwitch CI |
fe1a04 |
if row:
|
|
Open vSwitch CI |
fe1a04 |
del table.rows[uuid]
|
|
Open vSwitch CI |
fe1a04 |
- self.notify(ROW_DELETE, row)
|
|
Open vSwitch CI |
fe1a04 |
- changed = True
|
|
Open vSwitch CI |
fe1a04 |
+ return Notice(ROW_DELETE, row)
|
|
Open vSwitch CI |
fe1a04 |
else:
|
|
Open vSwitch CI |
fe1a04 |
# XXX rate-limit
|
|
Open vSwitch CI |
fe1a04 |
vlog.warn("cannot delete missing row %s from table"
|
|
Open vSwitch CI |
fe1a04 |
@@ -681,29 +692,27 @@ class Idl(object):
|
|
Open vSwitch CI |
fe1a04 |
changed = self.__row_update(table, row, row_update)
|
|
Open vSwitch CI |
fe1a04 |
table.rows[uuid] = row
|
|
Open vSwitch CI |
fe1a04 |
if changed:
|
|
Open vSwitch CI |
fe1a04 |
- self.notify(ROW_CREATE, row)
|
|
Open vSwitch CI |
fe1a04 |
+ return Notice(ROW_CREATE, row)
|
|
Open vSwitch CI |
fe1a04 |
elif "modify" in row_update:
|
|
Open vSwitch CI |
fe1a04 |
if not row:
|
|
Open vSwitch CI |
fe1a04 |
raise error.Error('Modify non-existing row')
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
old_row = self.__apply_diff(table, row, row_update['modify'])
|
|
Open vSwitch CI |
fe1a04 |
- self.notify(ROW_UPDATE, row, Row(self, table, uuid, old_row))
|
|
Open vSwitch CI |
fe1a04 |
- changed = True
|
|
Open vSwitch CI |
fe1a04 |
+ return Notice(ROW_UPDATE, row, Row(self, table, uuid, old_row))
|
|
Open vSwitch CI |
fe1a04 |
else:
|
|
Open vSwitch CI |
fe1a04 |
raise error.Error('<row-update> unknown operation',
|
|
Open vSwitch CI |
fe1a04 |
row_update)
|
|
Open vSwitch CI |
fe1a04 |
- return changed
|
|
Open vSwitch CI |
fe1a04 |
+ return False
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
def __process_update(self, table, uuid, old, new):
|
|
Open vSwitch CI |
fe1a04 |
- """Returns True if a column changed, False otherwise."""
|
|
Open vSwitch CI |
fe1a04 |
+ """Returns Notice if a column changed, False otherwise."""
|
|
Open vSwitch CI |
fe1a04 |
row = table.rows.get(uuid)
|
|
Open vSwitch CI |
fe1a04 |
changed = False
|
|
Open vSwitch CI |
fe1a04 |
if not new:
|
|
Open vSwitch CI |
fe1a04 |
# Delete row.
|
|
Open vSwitch CI |
fe1a04 |
if row:
|
|
Open vSwitch CI |
fe1a04 |
del table.rows[uuid]
|
|
Open vSwitch CI |
fe1a04 |
- changed = True
|
|
Open vSwitch CI |
fe1a04 |
- self.notify(ROW_DELETE, row)
|
|
Open vSwitch CI |
fe1a04 |
+ return Notice(ROW_DELETE, row)
|
|
Open vSwitch CI |
fe1a04 |
else:
|
|
Open vSwitch CI |
fe1a04 |
# XXX rate-limit
|
|
Open vSwitch CI |
fe1a04 |
vlog.warn("cannot delete missing row %s from table %s"
|
|
Open vSwitch CI |
fe1a04 |
@@ -723,7 +732,7 @@ class Idl(object):
|
|
Open vSwitch CI |
fe1a04 |
if op == ROW_CREATE:
|
|
Open vSwitch CI |
fe1a04 |
table.rows[uuid] = row
|
|
Open vSwitch CI |
fe1a04 |
if changed:
|
|
Open vSwitch CI |
fe1a04 |
- self.notify(ROW_CREATE, row)
|
|
Open vSwitch CI |
fe1a04 |
+ return Notice(ROW_CREATE, row)
|
|
Open vSwitch CI |
fe1a04 |
else:
|
|
Open vSwitch CI |
fe1a04 |
op = ROW_UPDATE
|
|
Open vSwitch CI |
fe1a04 |
if not row:
|
|
Open vSwitch CI |
fe1a04 |
@@ -737,8 +746,8 @@ class Idl(object):
|
|
Open vSwitch CI |
fe1a04 |
if op == ROW_CREATE:
|
|
Open vSwitch CI |
fe1a04 |
table.rows[uuid] = row
|
|
Open vSwitch CI |
fe1a04 |
if changed:
|
|
Open vSwitch CI |
fe1a04 |
- self.notify(op, row, Row.from_json(self, table, uuid, old))
|
|
Open vSwitch CI |
fe1a04 |
- return changed
|
|
Open vSwitch CI |
fe1a04 |
+ return Notice(op, row, Row.from_json(self, table, uuid, old))
|
|
Open vSwitch CI |
fe1a04 |
+ return False
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
def __check_server_db(self):
|
|
Open vSwitch CI |
fe1a04 |
"""Returns True if this is a valid server database, False otherwise."""
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/automake.mk b/tests/automake.mk
|
|
Open vSwitch CI |
fe1a04 |
index 677b99a6b4..fc80e027df 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/tests/automake.mk
|
|
Open vSwitch CI |
fe1a04 |
+++ b/tests/automake.mk
|
|
Open vSwitch CI |
fe1a04 |
@@ -134,7 +134,8 @@ FUZZ_REGRESSION_TESTS = \
|
|
Open vSwitch CI |
fe1a04 |
tests/fuzz-regression/ofp_print_fuzzer-5722747668791296 \
|
|
Open vSwitch CI |
fe1a04 |
tests/fuzz-regression/ofp_print_fuzzer-6285128790704128 \
|
|
Open vSwitch CI |
fe1a04 |
tests/fuzz-regression/ofp_print_fuzzer-6470117922701312 \
|
|
Open vSwitch CI |
fe1a04 |
- tests/fuzz-regression/ofp_print_fuzzer-6502620041576448
|
|
Open vSwitch CI |
fe1a04 |
+ tests/fuzz-regression/ofp_print_fuzzer-6502620041576448 \
|
|
Open vSwitch CI |
fe1a04 |
+ tests/fuzz-regression/ofp_print_fuzzer-6540965472632832
|
|
Open vSwitch CI |
fe1a04 |
$(srcdir)/tests/fuzz-regression-list.at: tests/automake.mk
|
|
Open vSwitch CI |
fe1a04 |
$(AM_V_GEN)for name in $(FUZZ_REGRESSION_TESTS); do \
|
|
Open vSwitch CI |
fe1a04 |
basename=`echo $$name | sed 's,^.*/,,'`; \
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/daemon.at b/tests/daemon.at
|
|
Open vSwitch CI |
fe1a04 |
index a7982de381..39d9aa391e 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/tests/daemon.at
|
|
Open vSwitch CI |
fe1a04 |
+++ b/tests/daemon.at
|
|
Open vSwitch CI |
fe1a04 |
@@ -218,11 +218,11 @@ OVS_WAIT_UNTIL([test -s ovsdb-server.pid])
|
|
Open vSwitch CI |
fe1a04 |
OVS_WAIT_UNTIL([sc query ovsdb-server | grep STATE | grep RUNNING > /dev/null 2>&1])
|
|
Open vSwitch CI |
fe1a04 |
AT_CHECK([kill -0 `cat ovsdb-server.pid`], [0], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
AT_CHECK([ovs-appctl -t ovsdb-server ovsdb-server/list-dbs], [0],
|
|
Open vSwitch CI |
fe1a04 |
-[Open_vSwitch
|
|
Open vSwitch CI |
fe1a04 |
+[_Server
|
|
Open vSwitch CI |
fe1a04 |
])
|
|
Open vSwitch CI |
fe1a04 |
AT_CHECK([sc stop ovsdb-server], [0], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
OVS_WAIT_UNTIL([test ! -s ovsdb-server.pid])
|
|
Open vSwitch CI |
fe1a04 |
-AT_CHECK([sc query ovsdb-server | grep STATE | grep STOPPED], [0], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
+OVS_WAIT_UNTIL([sc query ovsdb-server | grep STATE | grep STOPPED > /dev/null 2>&1])
|
|
Open vSwitch CI |
fe1a04 |
AT_CHECK([sc delete ovsdb-server], [0], [[[SC]] DeleteService SUCCESS
|
|
Open vSwitch CI |
fe1a04 |
])
|
|
Open vSwitch CI |
fe1a04 |
AT_CLEANUP
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/dpif-netdev.at b/tests/dpif-netdev.at
|
|
Open vSwitch CI |
fe1a04 |
index 2862a3c9b9..3e62225571 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/tests/dpif-netdev.at
|
|
Open vSwitch CI |
fe1a04 |
+++ b/tests/dpif-netdev.at
|
|
Open vSwitch CI |
fe1a04 |
@@ -589,3 +589,20 @@ arp,in_port=ANY,dl_vlan=11,dl_vlan_pcp=7,vlan_tci1=0x0000,dl_src=00:06:07:08:09:
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
DPIF_NETDEV_FLOW_HW_OFFLOAD_OFFSETS_VID_ARP([dummy])
|
|
Open vSwitch CI |
fe1a04 |
DPIF_NETDEV_FLOW_HW_OFFLOAD_OFFSETS_VID_ARP([dummy-pmd])
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+AT_SETUP([dpif-netdev - check dpctl/add-flow in_port exact match])
|
|
Open vSwitch CI |
fe1a04 |
+OVS_VSWITCHD_START(
|
|
Open vSwitch CI |
fe1a04 |
+ [add-port br0 p1 \
|
|
Open vSwitch CI |
fe1a04 |
+ -- set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p0.sock \
|
|
Open vSwitch CI |
fe1a04 |
+ -- set bridge br0 datapath-type=dummy \
|
|
Open vSwitch CI |
fe1a04 |
+ other-config:datapath-id=1234 fail-mode=secure])
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([ovs-appctl dpctl/add-flow "eth(),eth_type(0x0800),ipv4()" "3"], [2],
|
|
Open vSwitch CI |
fe1a04 |
+[], [dnl
|
|
Open vSwitch CI |
fe1a04 |
+ovs-vswitchd: updating flow table (Invalid argument)
|
|
Open vSwitch CI |
fe1a04 |
+ovs-appctl: ovs-vswitchd: server returned an error
|
|
Open vSwitch CI |
fe1a04 |
+])
|
|
Open vSwitch CI |
fe1a04 |
+OVS_WAIT_UNTIL([grep "flow: in_port is not an exact match" ovs-vswitchd.log])
|
|
Open vSwitch CI |
fe1a04 |
+OVS_VSWITCHD_STOP(["/flow: in_port is not an exact match/d
|
|
Open vSwitch CI |
fe1a04 |
+/failed to put/d"])
|
|
Open vSwitch CI |
fe1a04 |
+AT_CLEANUP
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/fuzz-regression-list.at b/tests/fuzz-regression-list.at
|
|
Open vSwitch CI |
fe1a04 |
index e3173fb88f..2347c690ef 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/tests/fuzz-regression-list.at
|
|
Open vSwitch CI |
fe1a04 |
+++ b/tests/fuzz-regression-list.at
|
|
Open vSwitch CI |
fe1a04 |
@@ -21,3 +21,4 @@ TEST_FUZZ_REGRESSION([ofp_print_fuzzer-5722747668791296])
|
|
Open vSwitch CI |
fe1a04 |
TEST_FUZZ_REGRESSION([ofp_print_fuzzer-6285128790704128])
|
|
Open vSwitch CI |
fe1a04 |
TEST_FUZZ_REGRESSION([ofp_print_fuzzer-6470117922701312])
|
|
Open vSwitch CI |
fe1a04 |
TEST_FUZZ_REGRESSION([ofp_print_fuzzer-6502620041576448])
|
|
Open vSwitch CI |
fe1a04 |
+TEST_FUZZ_REGRESSION([ofp_print_fuzzer-6540965472632832])
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/fuzz-regression/ofp_print_fuzzer-6540965472632832 b/tests/fuzz-regression/ofp_print_fuzzer-6540965472632832
|
|
Open vSwitch CI |
fe1a04 |
new file mode 100644
|
|
Open vSwitch CI |
fe1a04 |
index 0000000000..e69de29bb2
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/ovsdb-client.at b/tests/ovsdb-client.at
|
|
Open vSwitch CI |
fe1a04 |
index 8d777a0275..5e3b26aea8 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/tests/ovsdb-client.at
|
|
Open vSwitch CI |
fe1a04 |
+++ b/tests/ovsdb-client.at
|
|
Open vSwitch CI |
fe1a04 |
@@ -12,6 +12,30 @@ AT_CHECK([ovsdb-client get-schema-cksum unix:socket ordinals], [0], [12345678 9
|
|
Open vSwitch CI |
fe1a04 |
OVSDB_SERVER_SHUTDOWN
|
|
Open vSwitch CI |
fe1a04 |
AT_CLEANUP
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+AT_SETUP([ovsdb-client needs-conversion (no conversion needed)])
|
|
Open vSwitch CI |
fe1a04 |
+AT_KEYWORDS([ovsdb client file positive])
|
|
Open vSwitch CI |
fe1a04 |
+ordinal_schema > schema
|
|
Open vSwitch CI |
fe1a04 |
+touch .db.~lock~
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([ovsdb-tool create db schema], [0], [], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket db], [0], [ignore], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([ovsdb-client needs-conversion unix:socket schema], [0], [no
|
|
Open vSwitch CI |
fe1a04 |
+])
|
|
Open vSwitch CI |
fe1a04 |
+OVSDB_SERVER_SHUTDOWN
|
|
Open vSwitch CI |
fe1a04 |
+AT_CLEANUP
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
+AT_SETUP([ovsdb-client needs-conversion (conversion needed)])
|
|
Open vSwitch CI |
fe1a04 |
+AT_KEYWORDS([ovsdb client file positive])
|
|
Open vSwitch CI |
fe1a04 |
+ordinal_schema > schema
|
|
Open vSwitch CI |
fe1a04 |
+touch .db.~lock~
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([ovsdb-tool create db schema], [0], [], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --remote=punix:socket db], [0], [ignore], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
+sed 's/5\.1\.3/5.1.4/' < schema > schema2
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([diff schema schema2], [1], [ignore])
|
|
Open vSwitch CI |
fe1a04 |
+AT_CHECK([ovsdb-client needs-conversion unix:socket schema2], [0], [yes
|
|
Open vSwitch CI |
fe1a04 |
+])
|
|
Open vSwitch CI |
fe1a04 |
+OVSDB_SERVER_SHUTDOWN
|
|
Open vSwitch CI |
fe1a04 |
+AT_CLEANUP
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
AT_SETUP([ovsdb-client backup and restore])
|
|
Open vSwitch CI |
fe1a04 |
AT_KEYWORDS([ovsdb client positive])
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at
|
|
Open vSwitch CI |
fe1a04 |
index 4b4791a7da..e00e67e949 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/tests/ovsdb-idl.at
|
|
Open vSwitch CI |
fe1a04 |
+++ b/tests/ovsdb-idl.at
|
|
Open vSwitch CI |
fe1a04 |
@@ -1486,6 +1486,28 @@ m4_define([OVSDB_CHECK_IDL_NOTIFY],
|
|
Open vSwitch CI |
fe1a04 |
[OVSDB_CHECK_IDL_PY([$1], [], [$2], [$3], [notify $4], [$5])
|
|
Open vSwitch CI |
fe1a04 |
OVSDB_CHECK_IDL_SSL_PY([$1], [], [$2], [$3], [notify $4], [$5])])
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
+OVSDB_CHECK_IDL_NOTIFY([simple link idl verify notify],
|
|
Open vSwitch CI |
fe1a04 |
+ [['track-notify' \
|
|
Open vSwitch CI |
fe1a04 |
+ '["idltest",
|
|
Open vSwitch CI |
fe1a04 |
+ {"op": "insert",
|
|
Open vSwitch CI |
fe1a04 |
+ "table": "link1",
|
|
Open vSwitch CI |
fe1a04 |
+ "row": {"i": 1, "k": ["named-uuid", "l1row"], "l2": ["set", [["named-uuid", "l2row"]]]},
|
|
Open vSwitch CI |
fe1a04 |
+ "uuid-name": "l1row"},
|
|
Open vSwitch CI |
fe1a04 |
+ {"op": "insert",
|
|
Open vSwitch CI |
fe1a04 |
+ "table": "link2",
|
|
Open vSwitch CI |
fe1a04 |
+ "uuid-name": "l2row",
|
|
Open vSwitch CI |
fe1a04 |
+ "row": {"i": 2, "l1": ["set", [["named-uuid", "l1row"]]]}}]']],
|
|
Open vSwitch CI |
fe1a04 |
+[[000: empty
|
|
Open vSwitch CI |
fe1a04 |
+000: event:create, row={uuid=<0>}, updates=None
|
|
Open vSwitch CI |
fe1a04 |
+000: event:create, row={uuid=<1>}, updates=None
|
|
Open vSwitch CI |
fe1a04 |
+001: {"error":null,"result":[{"uuid":["uuid","<2>"]},{"uuid":["uuid","<3>"]}]}
|
|
Open vSwitch CI |
fe1a04 |
+002: event:create, row={i=1 uuid=<2> l2=[<3>]}, updates=None
|
|
Open vSwitch CI |
fe1a04 |
+002: event:create, row={i=2 uuid=<3> l1=[<2>]}, updates=None
|
|
Open vSwitch CI |
fe1a04 |
+002: i=1 k=1 ka=[] l2=2 uuid=<2>
|
|
Open vSwitch CI |
fe1a04 |
+002: i=2 l1=1 uuid=<3>
|
|
Open vSwitch CI |
fe1a04 |
+003: done
|
|
Open vSwitch CI |
fe1a04 |
+]])
|
|
Open vSwitch CI |
fe1a04 |
+
|
|
Open vSwitch CI |
fe1a04 |
OVSDB_CHECK_IDL_NOTIFY([simple idl verify notify],
|
|
Open vSwitch CI |
fe1a04 |
[['track-notify' \
|
|
Open vSwitch CI |
fe1a04 |
'["idltest",
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/tests/test-ovsdb.py b/tests/test-ovsdb.py
|
|
Open vSwitch CI |
fe1a04 |
index a196802743..9d3228f234 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/tests/test-ovsdb.py
|
|
Open vSwitch CI |
fe1a04 |
+++ b/tests/test-ovsdb.py
|
|
Open vSwitch CI |
fe1a04 |
@@ -162,6 +162,8 @@ def get_simple_printable_row_string(row, columns):
|
|
Open vSwitch CI |
fe1a04 |
if isinstance(value, dict):
|
|
Open vSwitch CI |
fe1a04 |
value = sorted((row_to_uuid(k), row_to_uuid(v))
|
|
Open vSwitch CI |
fe1a04 |
for k, v in value.items())
|
|
Open vSwitch CI |
fe1a04 |
+ if isinstance(value, (list, tuple)):
|
|
Open vSwitch CI |
fe1a04 |
+ value = sorted((row_to_uuid(v) for v in value))
|
|
Open vSwitch CI |
fe1a04 |
s += "%s=%s " % (column, value)
|
|
Open vSwitch CI |
fe1a04 |
s = s.strip()
|
|
Open vSwitch CI |
fe1a04 |
s = re.sub('""|,|u?\'', "", s)
|
|
Open vSwitch CI |
fe1a04 |
@@ -172,9 +174,10 @@ def get_simple_printable_row_string(row, columns):
|
|
Open vSwitch CI |
fe1a04 |
return s
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
-def get_simple_table_printable_row(row):
|
|
Open vSwitch CI |
fe1a04 |
+def get_simple_table_printable_row(row, *additional_columns):
|
|
Open vSwitch CI |
fe1a04 |
simple_columns = ["i", "r", "b", "s", "u", "ia",
|
|
Open vSwitch CI |
fe1a04 |
"ra", "ba", "sa", "ua", "uuid"]
|
|
Open vSwitch CI |
fe1a04 |
+ simple_columns.extend(additional_columns)
|
|
Open vSwitch CI |
fe1a04 |
return get_simple_printable_row_string(row, simple_columns)
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
@@ -637,7 +640,8 @@ def do_idl(schema_file, remote, *commands):
|
|
Open vSwitch CI |
fe1a04 |
def mock_notify(event, row, updates=None):
|
|
Open vSwitch CI |
fe1a04 |
output = "%03d: " % step
|
|
Open vSwitch CI |
fe1a04 |
output += "event:" + str(event) + ", row={"
|
|
Open vSwitch CI |
fe1a04 |
- output += get_simple_table_printable_row(row) + "}, updates="
|
|
Open vSwitch CI |
fe1a04 |
+ output += get_simple_table_printable_row(row,
|
|
Open vSwitch CI |
fe1a04 |
+ 'l2', 'l1') + "}, updates="
|
|
Open vSwitch CI |
fe1a04 |
if updates is None:
|
|
Open vSwitch CI |
fe1a04 |
output += "None"
|
|
Open vSwitch CI |
fe1a04 |
else:
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
|
|
Open vSwitch CI |
fe1a04 |
index d71c34e691..4156da20ef 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/utilities/ovs-ctl.in
|
|
Open vSwitch CI |
fe1a04 |
+++ b/utilities/ovs-ctl.in
|
|
Open vSwitch CI |
fe1a04 |
@@ -226,7 +226,9 @@ start_forwarding () {
|
|
Open vSwitch CI |
fe1a04 |
if test X"$OVS_VSWITCHD" = Xyes; then
|
|
Open vSwitch CI |
fe1a04 |
do_start_forwarding || return 1
|
|
Open vSwitch CI |
fe1a04 |
fi
|
|
Open vSwitch CI |
fe1a04 |
- set_hostname &
|
|
Open vSwitch CI |
fe1a04 |
+ if test X"$RECORD_HOSTNAME" = Xyes; then
|
|
Open vSwitch CI |
fe1a04 |
+ set_hostname &
|
|
Open vSwitch CI |
fe1a04 |
+ fi
|
|
Open vSwitch CI |
fe1a04 |
return 0
|
|
Open vSwitch CI |
fe1a04 |
}
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
@@ -317,6 +319,7 @@ set_defaults () {
|
|
Open vSwitch CI |
fe1a04 |
SYSTEM_ID=
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
FULL_HOSTNAME=yes
|
|
Open vSwitch CI |
fe1a04 |
+ RECORD_HOSTNAME=yes
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
DELETE_BRIDGES=no
|
|
Open vSwitch CI |
fe1a04 |
DELETE_TRANSIENT_PORTS=no
|
|
Open vSwitch CI |
fe1a04 |
@@ -378,19 +381,24 @@ This program is intended to be invoked internally by Open vSwitch startup
|
|
Open vSwitch CI |
fe1a04 |
scripts. System administrators should not normally invoke it directly.
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
Commands:
|
|
Open vSwitch CI |
fe1a04 |
- start start Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
- stop stop Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
- restart stop and start Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
- status check whether Open vSwitch daemons are running
|
|
Open vSwitch CI |
fe1a04 |
- version print versions of Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
- load-kmod insert modules if not already present
|
|
Open vSwitch CI |
fe1a04 |
- force-reload-kmod save OVS network device state, stop OVS, unload kernel
|
|
Open vSwitch CI |
fe1a04 |
- module, reload kernel module, start OVS, restore state
|
|
Open vSwitch CI |
fe1a04 |
- enable-protocol enable protocol specified in options with iptables
|
|
Open vSwitch CI |
fe1a04 |
- delete-transient-ports delete transient (other_config:transient=true) ports
|
|
Open vSwitch CI |
fe1a04 |
- start-ovs-ipsec start Open vSwitch ipsec daemon
|
|
Open vSwitch CI |
fe1a04 |
- stop-ovs-ipsec stop Open vSwitch ipsec daemon
|
|
Open vSwitch CI |
fe1a04 |
- help display this help message
|
|
Open vSwitch CI |
fe1a04 |
+ start start Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
+ stop stop Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
+ restart stop and start Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
+ status check whether Open vSwitch daemons are running
|
|
Open vSwitch CI |
fe1a04 |
+ version print versions of Open vSwitch daemons
|
|
Open vSwitch CI |
fe1a04 |
+ load-kmod insert modules if not already present
|
|
Open vSwitch CI |
fe1a04 |
+ force-reload-kmod save OVS network device state, stop OVS, unload
|
|
Open vSwitch CI |
fe1a04 |
+ kernel module, reload kernel module, start OVS,
|
|
Open vSwitch CI |
fe1a04 |
+ restore state
|
|
Open vSwitch CI |
fe1a04 |
+ enable-protocol enable protocol specified in options with
|
|
Open vSwitch CI |
fe1a04 |
+ iptables
|
|
Open vSwitch CI |
fe1a04 |
+ delete-transient-ports delete transient (other_config:transient=true)
|
|
Open vSwitch CI |
fe1a04 |
+ ports
|
|
Open vSwitch CI |
fe1a04 |
+ start-ovs-ipsec start Open vSwitch ipsec daemon
|
|
Open vSwitch CI |
fe1a04 |
+ stop-ovs-ipsec stop Open vSwitch ipsec daemon
|
|
Open vSwitch CI |
fe1a04 |
+ record-hostname-if-not-set determine the system hostname and record it in
|
|
Open vSwitch CI |
fe1a04 |
+ the Open vSwitch database if not already set
|
|
Open vSwitch CI |
fe1a04 |
+ help display this help message
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
One of the following options is required for "start", "restart" and "force-reload-kmod":
|
|
Open vSwitch CI |
fe1a04 |
--system-id=UUID set specific ID to uniquely identify this system
|
|
Open vSwitch CI |
fe1a04 |
@@ -411,6 +419,8 @@ Less important options for "start", "restart" and "force-reload-kmod":
|
|
Open vSwitch CI |
fe1a04 |
--ovsdb-server-priority=NICE set ovsdb-server's niceness (default: $OVSDB_SERVER_PRIORITY)
|
|
Open vSwitch CI |
fe1a04 |
--ovs-vswitchd-priority=NICE set ovs-vswitchd's niceness (default: $OVS_VSWITCHD_PRIORITY)
|
|
Open vSwitch CI |
fe1a04 |
--no-full-hostname set short hostname instead of full hostname
|
|
Open vSwitch CI |
fe1a04 |
+ --no-record-hostname do not attempt to determine/record system
|
|
Open vSwitch CI |
fe1a04 |
+ hostname as part of start command
|
|
Open vSwitch CI |
fe1a04 |
|
|
Open vSwitch CI |
fe1a04 |
Debugging options for "start", "restart" and "force-reload-kmod":
|
|
Open vSwitch CI |
fe1a04 |
--ovsdb-server-wrapper=WRAPPER
|
|
Open vSwitch CI |
fe1a04 |
@@ -569,6 +579,9 @@ case $command in
|
|
Open vSwitch CI |
fe1a04 |
stop-ovs-ipsec)
|
|
Open vSwitch CI |
fe1a04 |
stop_ovs_ipsec
|
|
Open vSwitch CI |
fe1a04 |
;;
|
|
Open vSwitch CI |
fe1a04 |
+ record-hostname-if-not-set)
|
|
Open vSwitch CI |
fe1a04 |
+ set_hostname
|
|
Open vSwitch CI |
fe1a04 |
+ ;;
|
|
Open vSwitch CI |
fe1a04 |
help)
|
|
Open vSwitch CI |
fe1a04 |
usage
|
|
Open vSwitch CI |
fe1a04 |
;;
|
|
Open vSwitch CI |
fe1a04 |
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
|
|
Open vSwitch CI |
fe1a04 |
index a2ad84edef..4597a215d9 100644
|
|
Open vSwitch CI |
fe1a04 |
--- a/vswitchd/vswitch.xml
|
|
Open vSwitch CI |
fe1a04 |
+++ b/vswitchd/vswitch.xml
|
|
Open vSwitch CI |
fe1a04 |
@@ -4660,7 +4660,8 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
|
|
Open vSwitch CI |
fe1a04 |
packets per second the CIR would be set to to to 46000000. This value
|
|
Open vSwitch CI |
fe1a04 |
can be broken into '1,000,000 x 46'. Where 1,000,000 is the policing
|
|
Open vSwitch CI |
fe1a04 |
rate for the number of packets per second and 46 represents the size
|
|
Open vSwitch CI |
fe1a04 |
- of the packet data for a 64 byte ip packet.
|
|
Open vSwitch CI |
fe1a04 |
+ of the packet data for a 64 bytes IP packet without 14 bytes Ethernet
|
|
Open vSwitch CI |
fe1a04 |
+ and 4 bytes FCS header.
|
|
Open vSwitch CI |
fe1a04 |
</column>
|
|
Open vSwitch CI |
fe1a04 |
<column name="other_config" key="cbs" type='{"type": "integer"}'>
|
|
Open vSwitch CI |
fe1a04 |
The Committed Burst Size (CBS) is measured in bytes and represents a
|
|
Open vSwitch CI |
fe1a04 |
@@ -4681,7 +4682,8 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
|
|
Open vSwitch CI |
fe1a04 |
packets per second the EIR would be set to to to 46000000. This value
|
|
Open vSwitch CI |
fe1a04 |
can be broken into '1,000,000 x 46'. Where 1,000,000 is the policing
|
|
Open vSwitch CI |
fe1a04 |
rate for the number of packets per second and 46 represents the size
|
|
Open vSwitch CI |
fe1a04 |
- of the packet data for a 64 byte ip packet.
|
|
Open vSwitch CI |
fe1a04 |
+ of the packet data for a 64 bytes IP packet without 14 bytes Ethernet
|
|
Open vSwitch CI |
fe1a04 |
+ and 4 bytes FCS header.
|
|
Open vSwitch CI |
fe1a04 |
</column>
|
|
Open vSwitch CI |
fe1a04 |
<column name="other_config" key="ebs" type='{"type": "integer"}'>
|
|
Open vSwitch CI |
fe1a04 |
The Excess Burst Size (EBS) is measured in bytes and represents a
|