s/ n_bytes=0,//
s/ idle_age=[0-9]*,//
s/ hard_age=[0-9]*,//
+s/dp_hash=0x[0-9a-f]*\//dp_hash=0x0\//
+s/recirc_id=0x[0-9a-f]*,/recirc_id=0x0,/
'
}
# Filter (multiline) vconn debug messages from ovs-vswitchd.log.
-# Use with vconn_windows_sub() and ofctl_strip()
+# Use with vconn_sub() and ofctl_strip()
print_vconn_debug () { awk -F\| < ovs-vswitchd.log '
BEGIN { prt=0 }
/\|vconn\|DBG\|/ { sub(/[ \t]*$/, ""); print $3 "|" $4 "|" $5; prt=1; next }
'
}
-vconn_windows_sub() {
+vconn_sub() {
sed '
s/tcp:127.0.0.1:[0-9][0-9]*:/unix:/
s/No error/Success/
'
}
+]
-# parse_listening_port [SERVER]
+# PARSE_LISTENING_PORT LOGFILE VARIABLE
#
-# Parses the TCP or SSL port on which a server is listening from the
-# log, given that the server was told to listen on a kernel-chosen
-# port, file provided on stdin, and prints the port number on stdout.
-# You should specify the listening remote as ptcp:0:127.0.0.1 or
+# Parses the TCP or SSL port on which a server is listening from
+# LOGFILE, given that the server was told to listen on a kernel-chosen
+# port, and assigns the port number to shell VARIABLE. You should
+# specify the listening remote as ptcp:0:127.0.0.1 or
# pssl:0:127.0.0.1, or the equivalent with [::1] instead of 127.0.0.1.
#
# Here's an example of how to use this with ovsdb-server:
#
# ovsdb-server --log-file --remote=ptcp:0:127.0.0.1 ...
-# TCP_PORT=`parse_listening_port < ovsdb-server.log`
-parse_listening_port () {
- sed -n 's/.*0:.*: listening on port \([0-9]*\)$/\1/p'
-}]
+# PARSE_LISTENING_PORT([ovsdb-server.log], [TCP_PORT])
+# # Now $TCP_PORT holds the listening port.
+m4_define([PARSE_LISTENING_PORT],
+ [OVS_WAIT_UNTIL([$2=`sed -n 's/.*0:.*: listening on port \([[0-9]]*\)$/\1/p' "$1"` && test X != X"[$]$2"])])
start_daemon () {
"$@" -vconsole:off --detach --no-chdir --pidfile --log-file
# ovn_init_db DATABASE
#
-# Creates and initializes the given DATABASE (one of "ovn-sb" or "ovn-nb")
-# and starts its ovsdb-server instance.
+# Creates and initializes the given DATABASE (one of "ovn-sb" or "ovn-nb"),
+# starts its ovsdb-server instance, and sets the appropriate environment
+# variable (OVN_SB_DB or OVN_NB_DB) so that ovn-sbctl or ovn-nbctl uses the
+# database by default.
#
# Usually invoked from ovn_start.
ovn_init_db () {
: > "$d"/.$1.db.~lock~
as $1 ovsdb-tool create "$d"/$1.db "$abs_top_srcdir"/ovn/$1.ovsschema
as $1 start_daemon ovsdb-server --remote=punix:"$d"/$1.sock "$d"/$1.db
+ local var=`echo $1_db | tr a-z- A-Z_`
+ AS_VAR_SET([$var], [unix:$ovs_base/$1/$1.sock]); export $var
}
# ovn_start
#
# Creates and initializes ovn-sb and ovn-nb databases and starts their
-# ovsdb-server instance, and starts ovn-northd running against them.
+# ovsdb-server instance, sets appropriate environment variables so that
+# ovn-sbctl and ovn-nbctl use them by default, and starts ovn-northd running
+# against them.
ovn_start () {
ovn_init_db ovn-sb
ovn_init_db ovn-nb
- OVN_NB_DB=unix:$ovs_base/ovn-nb/ovn-nb.sock; export OVN_NB_DB
-
echo "starting ovn-northd"
mkdir "$ovs_base"/northd
as northd start_daemon ovn-northd \
ovs-vsctl \
-- set Open_vSwitch . external-ids:system-id=$sandbox \
-- set Open_vSwitch . external-ids:ovn-remote=unix:$ovs_base/ovn-sb/ovn-sb.sock \
- -- set Open_vSwitch . external-ids:ovn-encap-type=geneve \
+ -- set Open_vSwitch . external-ids:ovn-encap-type=geneve,vxlan \
-- set Open_vSwitch . external-ids:ovn-encap-ip=$ip \
-- add-br br-int \
-- set bridge br-int fail-mode=secure other-config:disable-in-band=true \
for e2 in $arp_table; do
set `echo $e2 | sed 's/,/ /g'`; sb2=$1 br2=$2
if test $sb1,$br1 != $sb2,$br2; then
- as $sb2 ovs-appctl tnl/arp/set $br2 $ip $mac
+ as $sb2 ovs-appctl tnl/neigh/set $br2 $ip $mac
fi
done
done
/vswitchd|INFO|ovs-vswitchd (Open vSwitch)/d
/reconnect|INFO|/d
/ofproto|INFO|using datapath ID/d
+/netdev_linux|INFO|.*device has unknown hardware address family/d
/ofproto|INFO|datapath ID changed to fedcba9876543210/d']])
])