mirror of
https://git.freebsd.org/ports.git
synced 2025-05-07 03:16:44 -04:00
sysutils/xe-guest-utilities: Update to 6.3.0
This update changes the way IP addresses and interfaces are reported to adhere to the newer XAPI syntax and will now report IPv6 addresses. PR: 281256 Reported by: freebsd@filter.paco.to
This commit is contained in:
parent
a133f8e336
commit
e172102c8c
2 changed files with 144 additions and 9 deletions
sysutils/xe-guest-utilities
|
@ -1,6 +1,5 @@
|
|||
PORTNAME= xe-guest-utilities
|
||||
PORTVERSION= 6.2.0
|
||||
PORTREVISION= 3
|
||||
PORTVERSION= 6.3.0
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= LOCAL/feld
|
||||
DISTNAME= ${PORTNAME}-6.0.2
|
||||
|
|
|
@ -1,16 +1,152 @@
|
|||
--- src/sbin/xe-update-guest-attrs.orig 2014-07-07 15:45:10.000000000 +0200
|
||||
+++ src/sbin/xe-update-guest-attrs 2015-01-30 10:24:05.000000000 +0100
|
||||
@@ -173,10 +173,10 @@
|
||||
xenstore_write_cached "control/feature-balloon" "1"
|
||||
--- src/sbin/xe-update-guest-attrs.orig 2024-09-03 15:39:43.133537000 -0400
|
||||
+++ src/sbin/xe-update-guest-attrs 2024-09-03 15:42:09.862675000 -0400
|
||||
@@ -39,7 +39,7 @@ XENSTORE=${XENSTORE:-/usr/local/bin/xenstore}
|
||||
|
||||
export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/sbin
|
||||
XENSTORE=${XENSTORE:-/usr/local/bin/xenstore}
|
||||
-
|
||||
+CACHEROOT="/var/cache/xenstore"
|
||||
XENSTORE_UPDATED=0
|
||||
|
||||
# parse command line opts
|
||||
@@ -54,7 +54,7 @@ xenstore_write_cached() {
|
||||
|
||||
xenstore_write_cached() {
|
||||
key="$1" newval="$2"
|
||||
- cache=/var/cache/xenstore/$key
|
||||
+ cache=${CACHEROOT}/$key
|
||||
if [ -f $cache ] ; then
|
||||
# cache exists
|
||||
oldval=$(cat "$cache")
|
||||
@@ -82,13 +82,13 @@ domid=$(/usr/local/bin/xenstore-read "domid")
|
||||
|
||||
# If we detect a domain change then delete our cache and force a refresh
|
||||
domid=$(/usr/local/bin/xenstore-read "domid")
|
||||
-cache=/var/cache/xenstore/unique-domain-id
|
||||
+cache=${CACHEROOT}/unique-domain-id
|
||||
newval=$(/usr/local/bin/xenstore-read "/local/domain/${domid}/unique-domain-id")
|
||||
if [ -e $cache ]; then
|
||||
oldval=$(cat "$cache")
|
||||
if [ "$oldval" != "$newval" ]; then
|
||||
# domain changed
|
||||
- rm -rf /var/cache/xenstore
|
||||
+ rm -rf xenstore
|
||||
fi
|
||||
fi
|
||||
mkdir -p $(dirname "$cache")
|
||||
@@ -96,7 +96,7 @@ xenstore_rm_cached() {
|
||||
|
||||
xenstore_rm_cached() {
|
||||
key="$1"
|
||||
- cache=/var/cache/xenstore/$key
|
||||
+ cache=${CACHEROOT}/$key
|
||||
if [ ! -e $cache ] ; then
|
||||
return 1
|
||||
fi
|
||||
@@ -109,21 +109,46 @@ xenstore_rm_cached() {
|
||||
return 1
|
||||
}
|
||||
|
||||
+# read cache, using xen-style integers (e.g., "0", "1")
|
||||
+# return bsd names like xn0
|
||||
xenstore_list_interfaces_cached() {
|
||||
- topdir=/var/cache/xenstore/attr
|
||||
+ topdir=${CACHEROOT}/attr
|
||||
if [ -d $topdir ] ; then
|
||||
cd $topdir
|
||||
- for dir in * ; do
|
||||
- [ -f $dir/ip ] && echo $dir
|
||||
+ # if a file named like vif/0/ipv4/0 exists, then xn0 is a valid interface
|
||||
+ # sort -u to get only unique interfaces
|
||||
+ iflist=$(ls vif/*/ipv?/* | cut -d / -f 2 | sort -u | xargs echo)
|
||||
+ for n in $iflist
|
||||
+ do
|
||||
+ echo "xn${n}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
+# XAPI expects things like attr/vif/0/ipv4/0 = 172.30.0.2
|
||||
+# So this tries to map BSD names like xn0 to attr/vif/0
|
||||
xe_ip_if() {
|
||||
-interfaces=$(/sbin/ifconfig -u | grep ': flags=' | grep xn | cut -d ':' -f1)
|
||||
-for if in $interfaces ; do
|
||||
- echo $(echo $if | sed 's/xn/eth/g') "|" $(/sbin/ifconfig $if | grep 'inet ' | cut -d ' ' -f2)
|
||||
-done
|
||||
+ interfaces=$(/sbin/ifconfig -u | grep ': flags=' | grep xn | cut -d ':' -f1)
|
||||
+ n=0
|
||||
+ for ifacename in $interfaces ; do
|
||||
+ v4ips=$(/sbin/ifconfig $ifacename | grep 'inet ' | cut -d ' ' -f2)
|
||||
+ # FreeBSD reports some IPv6 addrs like fe80:1234::abcd%xn0, the `cut` strips that off
|
||||
+ v6ips=$(/sbin/ifconfig $ifacename | grep 'inet6 ' | cut -d ' ' -f2 | cut -d % -f 1 )
|
||||
+ i=0
|
||||
+ for v4ip in $v4ips
|
||||
+ do
|
||||
+ echo "vif/$n/ipv4/$i | $v4ip"
|
||||
+ i=$(($i+1))
|
||||
+ done
|
||||
+
|
||||
+ i=0
|
||||
+ for v6ip in $v6ips
|
||||
+ do
|
||||
+ echo "vif/$n/ipv6/$i | $v6ip"
|
||||
+ i=$(($i+1))
|
||||
+ done
|
||||
+ n=$(($n+1))
|
||||
+ done
|
||||
}
|
||||
|
||||
if [ $MEMORY_MODE -eq 1 ] ; then
|
||||
@@ -140,22 +165,33 @@ fi
|
||||
xenstore_write_cached "data/meminfo_free" "$memavail"
|
||||
fi
|
||||
|
||||
+# xe_ip_if | while read linea
|
||||
+# do
|
||||
+# if=$(echo $linea | cut -d '|' -f1 | sed 's/ //g')
|
||||
+# inet=$(echo $linea | cut -d '|' -f2 | sed 's/^ //')
|
||||
+# xenstore_write_cached "attr/${if}/ip" "${inet}"
|
||||
+# done
|
||||
+
|
||||
+# This breaks apart a string like "vif/0/ipv4/0 | 172.16.0.8" into 2 arguments for
|
||||
+# xenstore_write_cached
|
||||
xe_ip_if | while read linea
|
||||
do
|
||||
- if=$(echo $linea | cut -d '|' -f1 | sed 's/ //g')
|
||||
- inet=$(echo $linea | cut -d '|' -f2 | sed 's/^ //')
|
||||
- xenstore_write_cached "attr/${if}/ip" "${inet}"
|
||||
+ if=$(echo $linea | cut -d '|' -f1 | tr -d ' ' )
|
||||
+ inet=$(echo $linea | cut -d '|' -f2 | tr -d ' ' )
|
||||
+ xenstore_write_cached "attr/${if}" "${inet}"
|
||||
done
|
||||
|
||||
# remove any interfaces that have been unplugged or downed
|
||||
-for at in $(xenstore_list_interfaces_cached) ; do
|
||||
+for xn in $(xenstore_list_interfaces_cached) ; do
|
||||
link=1
|
||||
- xn=$(echo $at | sed 's/eth/xn/')
|
||||
- iface=$(/sbin/ifconfig $xn | grep UP | cut -d ':' -f1)
|
||||
+ iface=$(/sbin/ifconfig $xn | grep "UP," | cut -d ':' -f1)
|
||||
[ "${iface}" = "${xn}" ] && link=0
|
||||
|
||||
if [ "$link" -gt "0" ] ; then
|
||||
- xenstore_rm_cached "attr/${at}"
|
||||
+ # bsd-named interface is gone, remove attr from xenstore
|
||||
+ vifnum=$(echo $xn | sed 's/xn//g')
|
||||
+ echo "removing vif $vifnum"
|
||||
+ xenstore_rm_cached "attr/vif/${vifnum}"
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -174,9 +210,9 @@ xenstore_write_cached "attr/PVAddons/MajorVersion" "6"
|
||||
|
||||
# build time addons
|
||||
-xenstore_write_cached "attr/PVAddons/MajorVersion" "6"
|
||||
xenstore_write_cached "attr/PVAddons/MajorVersion" "6"
|
||||
-xenstore_write_cached "attr/PVAddons/MinorVersion" "0"
|
||||
-xenstore_write_cached "attr/PVAddons/MicroVersion" "2"
|
||||
-xenstore_write_cached "attr/PVAddons/BuildVersion" "54078"
|
||||
+xenstore_write_cached "attr/PVAddons/MajorVersion" "6"
|
||||
+xenstore_write_cached "attr/PVAddons/MinorVersion" "2"
|
||||
+xenstore_write_cached "attr/PVAddons/MicroVersion" "0"
|
||||
+xenstore_write_cached "attr/PVAddons/MicroVersion" "1"
|
||||
+xenstore_write_cached "attr/PVAddons/BuildVersion" "76888"
|
||||
xenstore_write_cached "attr/PVAddons/Installed" "1"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue