pkgsrc/sysutils/xe-guest-utilities/patches/patch-xe-update-guest-attrs
sborrill 4bd459a05b Report as optimized for XenServer 6.5.
Rebuild OS version status each time rc.d script is run rather than using a
cached copy to ensure that OS updates are reported correctly.
Display all IPv4 and IPv6 addresses for vifs in XenCenter, not just first.
2015-04-20 08:05:30 +00:00

136 lines
5 KiB
Text

$NetBSD: patch-xe-update-guest-attrs,v 1.3 2015/04/20 08:05:30 sborrill Exp $
Patch for pkgsrc and NetBSD ifconfig
--- xe-update-guest-attrs.orig 2010-12-20 15:34:07.000000000 +0000
+++ xe-update-guest-attrs 2015-04-18 20:24:10.000000000 +0100
@@ -39,7 +39,7 @@
IPADDR_RE="\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}"
-export PATH=/usr/sbin:/usr/bin:/sbin:/bin
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/pkg/sbin:/usr/pkg/bin
XENSTORE=${XENSTORE:-xenstore}
XENSTORE_UPDATED=0
@@ -133,49 +133,50 @@
-# e.g.
-# $ ip addr show
-# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
-# link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
-# inet 127.0.0.1/8 scope host lo
-# inet6 ::1/128 scope host
-# valid_lft forever preferred_lft forever
-# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
-# link/ether 00:13:20:95:e8:74 brd ff:ff:ff:ff:ff:ff
-# inet 172.31.0.57/20 brd 172.31.15.255 scope global eth0
-# inet6 fe80::213:20ff:fe95:e874/64 scope link
-# valid_lft forever preferred_lft forever
-# 3: sit0: <NOARP> mtu 1480 qdisc noop
-# link/sit 0.0.0.0 brd 0.0.0.0
-
-#eval $(ip addr show | \
-# sed -n -e 's/^[[:digit:]]*: \([a-z0-9]*\): .*/ifs="\$ifs \1"; current="\1"; /gp;' \
-# -e 's/^[[:space:]]\{4\}inet \('${IPADDR_RE}'\)\/.*/eval inet_\${current}="\1"; /gp;')
-
-# e.g.
-# eth0 Link encap:Ethernet HWaddr 00:13:20:95:E8:74
-# inet addr:172.31.0.57 Bcast:172.31.15.255 Mask:255.255.240.0
-# inet6 addr: fe80::213:20ff:fe95:e874/64 Scope:Link
-# UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
-# RX packets:98001128 errors:0 dropped:0 overruns:0 frame:0
-# TX packets:87728920 errors:0 dropped:0 overruns:0 carrier:0
-# collisions:0 txqueuelen:1000
-# RX bytes:35864034092 (33.4 GiB) TX bytes:27544025180 (25.6 GiB)
-# Interrupt:177
-#
-# lo Link encap:Local Loopback
-# inet addr:127.0.0.1 Mask:255.0.0.0
-# inet6 addr: ::1/128 Scope:Host
-# UP LOOPBACK RUNNING MTU:16436 Metric:1
-# RX packets:32928 errors:0 dropped:0 overruns:0 frame:0
-# TX packets:32928 errors:0 dropped:0 overruns:0 carrier:0
-# collisions:0 txqueuelen:0
-# RX bytes:3604609 (3.4 MiB) TX bytes:3604609 (3.4 MiB)
-
-eval $(/sbin/ifconfig | \
- sed -n -e '/^[0-9a-z][0-9a-z]*\:/,/^$/d' \
- -e 's/^\([0-9a-z][0-9a-z]*\) .*/ifs="\$ifs \1"; current="\1"; /gp;' \
- -e 's/ *inet addr:\('$IPADDR_RE'\) .*/eval inet_\${current}="\1"; /gp;')
+#xennet0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+# capabilities=2800<TCP4CSUM_Tx,UDP4CSUM_Tx>
+# enabled=0
+# address: 0e:7e:86:20:7b:82
+# inet 192.168.1.109 netmask 0xffffff00 broadcast 192.168.1.255
+# inet alias 10.20.30.40 netmask 0xffffff00 broadcast 10.20.30.255
+# inet6 fe80::c7e:86ff:fe20:7b82%xennet0 prefixlen 64 scopeid 0x1
+#lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33184
+# inet 127.0.0.1 netmask 0xff000000
+# inet6 ::1 prefixlen 128
+# inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
+
+#/sbin/ifconfig | \
+# sed -n -e '/^[0-9a-z][0-9a-z]*\:/,/^$/d' \
+# -e 's/^\([0-9a-z][0-9a-z]*\) .*/ifs="\$ifs \1"; current="\1"; /gp;' \
+# -e 's/ *inet \('$IPADDR_RE'\) .*/eval inet_\${current}="\1"; /gp;'
+
+eval $(/sbin/ifconfig -a | \
+ awk '{
+ if ($0~"^[a-z][a-z0-9]*[0-9]:") {
+ if ($0~"^xennet[0-9]+:") {
+ current = $1
+ sub(":.*", "", current)
+ sub("xennet", "eth", current)
+ iflist = iflist " " current
+ ifs[current] = ""
+ } else {
+ current =""
+ }
+ }
+ if (($1 == "inet" || $1 == "inet6") && current != "") {
+ if ($2 == "alias") ip = $3
+ else ip = $2
+ if ($1 == "inet6") sub("%.*", "", ip)
+ if (ifs[current] != "") ifs[current] = ifs[current] ", " ip
+ else ifs[current] = ip
+ }
+ }
+ END {
+ sub("^ ", "", iflist)
+ printf "ifs=%c%s%c\n", 39, iflist, 39
+ for (i in ifs)
+ printf "inet_%s=%c%s%c\n", i, 39, ifs[i], 39
+ }')
# network
for if in $ifs ; do
@@ -206,16 +207,18 @@
fi
# whether I support ballooning or not
-xenstore_write_cached "control/feature-balloon" "1"
-
-# whether I support ballooning or not
-xenstore_write_cached "control/feature-balloon" "1"
+sysctl -n machdep.xen.balloon.current > /dev/null 2>&1
+if [ "$?" = 0 ]; then
+ xenstore_write_cached "control/feature-balloon" "1"
+else
+ xenstore_write_cached "control/feature-balloon" "0"
+fi
# build time addons
-xenstore_write_cached "attr/PVAddons/MajorVersion" "5"
-xenstore_write_cached "attr/PVAddons/MinorVersion" "6"
-xenstore_write_cached "attr/PVAddons/MicroVersion" "0"
-xenstore_write_cached "attr/PVAddons/BuildVersion" "39674"
+xenstore_write_cached "attr/PVAddons/MajorVersion" "@XENMAJOR@"
+xenstore_write_cached "attr/PVAddons/MinorVersion" "@XENMINOR@"
+xenstore_write_cached "attr/PVAddons/MicroVersion" "@XENTEENY@"
+xenstore_write_cached "attr/PVAddons/BuildVersion" "@XENBUILD@"
xenstore_write_cached "attr/PVAddons/Installed" "1"
# update xenstore if necc