mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-06-06 02:40:18 +00:00
arm-autonomy/xenguest-network: add kea dhcp4 configuration
Since dhcp-server was removed from oe-core layer,
we decided to add kea dhcp support in meta-arm-autonomy.
This patch introduce following changes:
(*) replaces all configuration and customization valid for dhcpd,
with kea complatible one.
(*) replaces dhcp-server rdependency with kea for xenguest-network recipe
(*) replaces default kea dhcp4 server configuration with a minimal one.
Change-Id: I4202b5b8f3be6801cbb4f9068061eccfdadee5f0
Issue-Id: SCM-1522
Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com>
Reviewed-by: Diego Sueiro <diego.sueiro@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
@@ -62,7 +62,7 @@ XENGUEST_IMAGE_DISK_PARTITIONS ??= "1:${XENGUEST_IMAGE_DISK_SIZE}:ext4:rootfs.ta
|
||||
# The "bridge" type will share the physical eth interface from dom0 with the
|
||||
# domU. This will allow the domU to have access to the external network.
|
||||
# The "nat" type will setup a virtual network between dom0 and domU and also
|
||||
# configure and run the dhcpd on dom0 to serve the domU.
|
||||
# configure and run the kea dhcp4 server on dom0 to serve the domU.
|
||||
# The "none" type will not affect any networking setting between on dom0 and
|
||||
# domU.
|
||||
XENGUEST_IMAGE_NETWORK_TYPE ??= "bridge"
|
||||
|
||||
@@ -12,9 +12,10 @@ At the moment 3 types of network arrangements are provided:
|
||||
|
||||
- Bridge: where the guest vif is added to the created bridge interface;
|
||||
|
||||
- NAT: where a private subnet is created for the guest, a dhcpd is started on
|
||||
the host to serve the guest and the proper iptables rules are created to
|
||||
allow the guest to access the external network;
|
||||
- NAT: where a private subnet is created for the guest,
|
||||
a kea dhcp4 server is started on the host to serve the guest
|
||||
and the proper iptables rules are created
|
||||
to allow the guest to access the external network;
|
||||
|
||||
- None: the guest vif is not connected to the bridge.
|
||||
|
||||
@@ -55,17 +56,20 @@ The following parameters are available:
|
||||
contains the dom0 physical interface giving the guest direct access to the
|
||||
external network.
|
||||
The **nat** type will setup a private network between dom0 and domU, setup
|
||||
the appropriate routing table, configure and run the dhcpd on dom0 to serve
|
||||
the domU and apply the iptables rules to allow the guest to acess the
|
||||
external network. The dhcpd configuration for the guest can be customised by
|
||||
replacing the
|
||||
"meta-arm-autonomy/recipes-extended/xenguest/files/dhcpd-params.cfg" file
|
||||
in a xenguest-network.bbappend. The dhcpd-params.cfg file is installed in
|
||||
the appropriate routing table, configure and run the kea dhcp4 server
|
||||
on dom0 to serve the domU and apply the iptables rules to allow the guest
|
||||
to acess the external network. The kea dhcp4 server configuration for
|
||||
the guest can be customised by replacing the
|
||||
"meta-arm-autonomy/recipes-extended/xenguest/files/kea-subnet4.json" file
|
||||
in a xenguest-network.bbappend. The kea-subnet4.json file is installed in
|
||||
the xenguest image and copied to
|
||||
"/etc/xenguest/guests/${guestname}/files/dhcpd-params.cfg" when the guest
|
||||
"/etc/xenguest/guests/${guestname}/files/kea-subnet4.json" when the guest
|
||||
image is created. It will be consumed by the
|
||||
"/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" script which is called by
|
||||
"/etc/xen/scripts/vif-nat" script when starting/stopping the xenguest.
|
||||
After guest start, "/etc/xenguest/init.post/xenguest-network-init-post.sh"
|
||||
script is called to reload kea dhcp4 server with updated configuration,
|
||||
after virtual network interface is ready.
|
||||
In the guest project, the NAT port forward can be customised by changing
|
||||
the XENGUEST_IMAGE_HOST_PORT (default: "1000 + ${domid}") and
|
||||
XENGUEST_IMAGE_GUEST_PORT (default: "22") variables in local.conf or
|
||||
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
|
||||
|
||||
Copy temp files used to add/remove dhcpd configurations to avoid
|
||||
replacing potential symlinks.
|
||||
|
||||
Index: git/tools/hotplug/Linux/vif-nat
|
||||
===================================================================
|
||||
--- git.orig/tools/hotplug/Linux/vif-nat
|
||||
+++ git/tools/hotplug/Linux/vif-nat
|
||||
@@ -99,7 +100,8 @@ dhcparg_remove_entry()
|
||||
then
|
||||
rm "$tmpfile"
|
||||
else
|
||||
- mv "$tmpfile" "$dhcpd_arg_file"
|
||||
+ cp "$tmpfile" "$dhcpd_arg_file"
|
||||
+ rm "$tmpfile"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -109,11 +111,11 @@ dhcparg_add_entry()
|
||||
local tmpfile=$(mktemp)
|
||||
# handle Red Hat, SUSE, and Debian styles, with or without quotes
|
||||
sed -e 's/^DHCPDARGS="*\([^"]*\)"*/DHCPDARGS="\1'"${dev} "'"/' \
|
||||
- "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
|
||||
+ "$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
|
||||
sed -e 's/^DHCPD_INTERFACE="*\([^"]*\)"*/DHCPD_INTERFACE="\1'"${dev} "'"/' \
|
||||
- "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
|
||||
+ "$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
|
||||
sed -e 's/^INTERFACES="*\([^"]*\)"*/INTERFACES="\1'"${dev} "'"/' \
|
||||
- "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
|
||||
+ "$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
|
||||
rm -f "$tmpfile"
|
||||
}
|
||||
|
||||
@@ -125,7 +127,8 @@ dhcp_remove_entry()
|
||||
then
|
||||
rm "$tmpfile"
|
||||
else
|
||||
- mv "$tmpfile" "$dhcpd_conf_file"
|
||||
+ cp "$tmpfile" "$dhcpd_conf_file"
|
||||
+ rm "$tmpfile"
|
||||
fi
|
||||
dhcparg_remove_entry
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
|
||||
|
||||
SRC_URI += "file://0001-vif-nat-fix-hostname.patch \
|
||||
file://0002-vif-nat-fix-symlink-removal.patch \
|
||||
"
|
||||
|
||||
PACKAGECONFIG_remove = "\
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
domid=$(xenstore_read "${XENBUS_PATH}/frontend-id")
|
||||
guestname=$(xenstore_read "/local/domain/${domid}/name")
|
||||
bridge=$(xenstore_read "${XENBUS_PATH}/bridge")
|
||||
mac=$(xenstore_read "$XENBUS_PATH/mac")
|
||||
kea_conf_file="/etc/kea/kea-dhcp4.conf"
|
||||
|
||||
if [ ! -f /etc/xenguest/guests/${guestname}/params.cfg ]; then
|
||||
log debug "No /etc/xenguest/guests/${guestname}/params.cfg. Exiting."
|
||||
@@ -36,63 +38,48 @@ get_subnet_prefix() {
|
||||
|
||||
subnetprefix=$(get_subnet_prefix)
|
||||
|
||||
dhcpd_remove_conf_entry()
|
||||
kea_remove_conf_entry()
|
||||
{
|
||||
local tmpfile=$(mktemp)
|
||||
log debug "kea_remove_conf_entry"
|
||||
claim_lock "vif-nat-kea"
|
||||
|
||||
# Remove the the xenguest dhcpd config file inclusion in the dhcpd
|
||||
# main config
|
||||
grep -v "include \"${XENGUEST_DHCPD_CONF_FILE}\";" \
|
||||
"${dhcpd_conf_file}" >"${tmpfile}"
|
||||
if ! diff "${tmpfile}" "${dhcpd_conf_file}" >/dev/null
|
||||
then
|
||||
cp "${tmpfile}" "${dhcpd_conf_file}"
|
||||
fi
|
||||
rm ${tmpfile}
|
||||
# Remove the the xenguest kea config file inclusion in the kea main config
|
||||
sed -i "/${kea_guest_config//'/'/'\/'}/d" "${kea_conf_file}"
|
||||
|
||||
# Remove the generated the xenguest dhcpd file
|
||||
rm ${XENGUEST_DHCPD_CONF_FILE}
|
||||
# Remove interface entry 1st case: [ "dev1", "dev_to_remove" ]
|
||||
sed -i "s/,\ \"$dev\"//" "${kea_conf_file}"
|
||||
# Remove interface entry 2nd case: [ "dev_to_remove", "dev1" ]
|
||||
sed -i "s/\"$dev\",\ //" "${kea_conf_file}"
|
||||
# Remove interface entry 3rd case: [ "dev_to_remove" ]
|
||||
sed -i "s/\[\ \"$dev\"\ \]/\[\ \]/" "${kea_conf_file}"
|
||||
|
||||
# Remove the generated the xenguest kea subnet conf file
|
||||
rm ${XENGUEST_KEA_SUBNET_CONFIG}
|
||||
|
||||
keactrl reload
|
||||
|
||||
release_lock "vif-nat-kea"
|
||||
}
|
||||
|
||||
# This function removes the dhcpd options added by the vif-nat script and
|
||||
# adds the user provided options under the ${XENGUEST_DHCPD_HOST_OPTIONS}
|
||||
# variable set in "/etc/xenguest/guests/${guestname}/files/dhcpd-params.cfg"
|
||||
# file.
|
||||
dhcpd_add_conf_entries()
|
||||
kea_add_conf_entries()
|
||||
{
|
||||
# We need to remove the previous added entry from vif-nat script
|
||||
dhcp_remove_entry
|
||||
log debug "kea_add_conf_entries"
|
||||
claim_lock "vif-nat-kea"
|
||||
|
||||
# Include the xenguest dhcpd config file in the dhcpd main config
|
||||
echo >>"${dhcpd_conf_file}" "include \"${XENGUEST_DHCPD_CONF_FILE}\";"
|
||||
# Include vif in the interfaces 1st case - no other entries:
|
||||
search_for='\"interfaces\": \[ '
|
||||
sed -i "/${search_for}\"*\"\ */ s/\ \]/,\ \"${dev}\"\ \]/g" "${kea_conf_file}"
|
||||
sed -i "s/${search_for}]/${search_for}\"${dev}\"\ \]/g" "${kea_conf_file}"
|
||||
|
||||
# Generate the xenguest dhcpd file
|
||||
echo -e "$(eval "echo -e \"$(cat ${XENGUEST_DHCPD_PARAMS_FILE})\"")" \
|
||||
>> "${XENGUEST_DHCPD_CONF_FILE}"
|
||||
# Include the xenguest kea subnet conf file in the kea main config
|
||||
search_for='\"subnet4\": \['
|
||||
sed -i "/$search_for/a $kea_guest_config" "${kea_conf_file}"
|
||||
|
||||
# Re-add the dhcpargs entries removed by dhcp_remove_entry call
|
||||
dhcparg_add_entry
|
||||
}
|
||||
# Generate the xenguest kea subnet conf file
|
||||
echo -e "$(eval "echo -e \"$(cat ${XENGUEST_KEA_SUBNET_TEMPLATE})\"")" \
|
||||
> "${XENGUEST_KEA_SUBNET_CONFIG}"
|
||||
|
||||
dhcpd_online(){
|
||||
log debug "dhcpd_online"
|
||||
claim_lock "vif-nat-dhcp"
|
||||
dhcpd_add_conf_entries
|
||||
release_lock "vif-nat-dhcp"
|
||||
"$dhcpd_init_file" restart || true
|
||||
}
|
||||
|
||||
dhcpd_offline(){
|
||||
log debug "dhcpd_offline"
|
||||
claim_lock "vif-nat-dhcp"
|
||||
dhcpd_remove_conf_entry
|
||||
release_lock "vif-nat-dhcp"
|
||||
"$dhcpd_init_file" restart || true # We need to ignore failure because
|
||||
# ISC dhcpd 3 borks if there is nothing
|
||||
# for it to do, which is the case if
|
||||
# the outgoing interface is not
|
||||
# configured to offer leases and there
|
||||
# are no vifs.
|
||||
release_lock "vif-nat-kea"
|
||||
}
|
||||
|
||||
call_extra_hooks() {
|
||||
@@ -111,24 +98,29 @@ call_extra_hooks() {
|
||||
|
||||
case "${XENGUEST_NETWORK_TYPE}" in
|
||||
nat)
|
||||
XENGUEST_DHCPD_PARAMS_FILE=${XENGUEST_DHCPD_PARAMS_FILE:-"/etc/xenguest/guests/${guestname}/files/dhcpd-params.cfg"}
|
||||
if [ ! -f ${XENGUEST_DHCPD_PARAMS_FILE} ]; then
|
||||
log debug "No ${XENGUEST_DHCPD_PARAMS_FILE} file. Aborting"
|
||||
XENGUEST_KEA_SUBNET_TEMPLATE=${XENGUEST_KEA_SUBNET_TEMPLATE:-"/etc/xenguest/guests/${guestname}/files/kea-subnet4.json"}
|
||||
if [ ! -f ${XENGUEST_KEA_SUBNET_TEMPLATE} ]; then
|
||||
log debug "No ${XENGUEST_KEA_SUBNET_TEMPLATE} file. Aborting"
|
||||
return
|
||||
fi
|
||||
|
||||
XENGUEST_DHCPD_CONF_FILE="/etc/dhcp/dhcpd.dom$domid.conf"
|
||||
XENGUEST_KEA_SUBNET_CONFIG="/etc/kea/kea-subnet4.dom$domid.json"
|
||||
if [ ! -d "$(dirname ${XENGUEST_KEA_SUBNET_CONFIG})" ]; then
|
||||
log debug "No kea configuration directory. Aborting"
|
||||
return
|
||||
fi
|
||||
kea_guest_config="\ \ \ \ <?include \"${XENGUEST_KEA_SUBNET_CONFIG}\"?>"
|
||||
|
||||
case "$command" in
|
||||
online)
|
||||
dhcpd_online
|
||||
kea_add_conf_entries
|
||||
|
||||
# Enable ip forwarding and NAT for the ${bridge} interface
|
||||
sysctl -w net.ipv4.ip_forward=1
|
||||
iptables_w -t nat -A POSTROUTING -o ${bridge} -j MASQUERADE -m comment --comment "dom${domid}"
|
||||
;;
|
||||
offline)
|
||||
dhcpd_offline
|
||||
kea_remove_conf_entry
|
||||
|
||||
# Remove the NAT iptables rules created for the dom${domid}
|
||||
guest_ipt_rule=$(iptables_w -t nat -vL POSTROUTING -n --line-number | grep -w dom${domid} | awk '{print $1}' | tac)
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
# This file holds the guest dhcpd options running on Dom0.
|
||||
# The "/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" called in the end of
|
||||
# the vif-nat script will use this file to generate the final dhcpd
|
||||
# configuration.
|
||||
|
||||
# This file is added in the xenguest image and installed in dom0 under
|
||||
# /etc/xenguest/guests/${guestname}/files/dhcpd-params.cfg when the guest
|
||||
# image is created.
|
||||
# Any customizations to it should be performed by replacing it via a bbappend.
|
||||
|
||||
# The \${hostname}, \${mac}, \${vif_ip} and \${router_ip} variables are set in
|
||||
# the vif-nat script context. The \${subnetprefix} variable is set in the
|
||||
# 00-vif-xenguest.hook script context.
|
||||
|
||||
# The "subnet" configuration node is mandatory in order to have the dhcpd
|
||||
# properly running.
|
||||
|
||||
host ${hostname} {
|
||||
hardware ethernet ${mac};
|
||||
fixed-address ${vif_ip};
|
||||
option routers ${router_ip};
|
||||
option subnet-mask 255.255.255.0;
|
||||
option broadcast-address ${subnetprefix}.255;
|
||||
option domain-name-servers 8.8.8.8;
|
||||
option host-name \"${hostname}\";
|
||||
option domain-name \"example.com\";
|
||||
}
|
||||
|
||||
subnet ${subnetprefix}.0 netmask 255.255.255.0 {
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
# This file holds the minimal kea dhcp4 server configuration.
|
||||
# It replaces existing kea dhcp configuration file via
|
||||
# "/etc/init.d/kea-restore-default-config" on every system boot.
|
||||
# The "/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" called in the end of
|
||||
# the vif-nat script will append each xenguest configuration to this file,
|
||||
# to generate the final dhcp configuration.
|
||||
# This file can be replaced with xenguest-network.bbappend.
|
||||
{
|
||||
"Dhcp4": {
|
||||
"interfaces-config": {
|
||||
"interfaces": [ ]
|
||||
},
|
||||
"lease-database": {
|
||||
"type": "memfile",
|
||||
"persist": false
|
||||
},
|
||||
"subnet4": [
|
||||
{
|
||||
"subnet": "192.0.2.0/24"
|
||||
}
|
||||
],
|
||||
"loggers": [
|
||||
{
|
||||
"name": "kea-dhcp4",
|
||||
"output_options": [ { "output": "/var/log/kea-dhcp4.log" } ],
|
||||
"severity": "INFO"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Xenguest Restore default kea dhcp4 configuration
|
||||
# This script restores a dhcp4 server configuration, to prevent
|
||||
# kea startup failures after random board hangs or powercuts.
|
||||
#
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
ret=$(keactrl status | grep -i "dhcpv4 server" | cut -d ' ' -f 3)
|
||||
if [ "$ret" = "active" ]; then
|
||||
echo "WARNING: cowardly refusing to replace dhcp4 configuration"
|
||||
echo "kea dhcp4 server is up and running!"
|
||||
else
|
||||
echo "Resetting kea dhcp4 configuration."
|
||||
cp -f /etc/kea/kea-dhcp4.conf.original /etc/kea/kea-dhcp4.conf
|
||||
fi
|
||||
;;
|
||||
status|stop|reload|force-reload|restart)
|
||||
true
|
||||
;;
|
||||
*)
|
||||
# do not advertise unreasonable commands that there is no reason
|
||||
# to use with this device
|
||||
echo $"Usage: $0 {start|stop|status|restart|force-reload}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $?
|
||||
@@ -0,0 +1,35 @@
|
||||
# This file holds the guest kea dhcp4 server options running on Dom0.
|
||||
# The "/etc/xen/scripts/vif-post.d/00-vif-xenguest.hook" called in the end of
|
||||
# the vif-nat script will use this file to generate the final dhcp
|
||||
# configuration.
|
||||
|
||||
# This file is added in the xenguest image and installed in dom0 under
|
||||
# /etc/xenguest/guests/${guestname}/files/kea-subnet4.json when the guest
|
||||
# image is created.
|
||||
# Any customizations to it should be performed by replacing it via a bbappend.
|
||||
|
||||
# The \${vif_ip} and \${router_ip} variables are set in
|
||||
# the vif-nat script context. The \${subnetprefix} and \${mac} variable are set in the
|
||||
# 00-vif-xenguest.hook script context.
|
||||
|
||||
# The "subnet" configuration node is mandatory in order to have the dhcp
|
||||
# properly running.
|
||||
{
|
||||
\"subnet\": \"${subnetprefix}.0/24\",
|
||||
\"option-data\": [
|
||||
{
|
||||
\"name\": \"routers\",
|
||||
\"data\": \"${router_ip}\"
|
||||
},
|
||||
{
|
||||
\"name\": \"domain-name-servers\",
|
||||
\"data\": \"8.8.8.8, 8.8.4.4\"
|
||||
}
|
||||
],
|
||||
\"reservations\": [
|
||||
{
|
||||
\"hw-address\": \"${mac}\",
|
||||
\"ip-address\": \"${vif_ip}\"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -10,16 +10,6 @@ BRIDGE_NAME="###BRIDGE_NAME###"
|
||||
|
||||
case "${XENGUEST_NETWORK_TYPE:-}" in
|
||||
nat)
|
||||
# Create the symlinks for the files that vif-nat script expects
|
||||
if [ ! -f /etc/dhcpd.conf ]; then
|
||||
ln -s dhcp/dhcpd.conf /etc/dhcpd.conf
|
||||
fi
|
||||
if [ ! -f /etc/init.d/dhcp3-server ]; then
|
||||
ln -s dhcp-server /etc/init.d/dhcp3-server
|
||||
fi
|
||||
if [ ! -f /etc/default/dhcp3-server ]; then
|
||||
ln -s dhcp-server /etc/default/dhcp3-server
|
||||
fi
|
||||
echo "vif = ['script=vif-nat']" >> ${guestcfgfile}
|
||||
;;
|
||||
bridge)
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
#!/bin/sh
|
||||
# This script is to reload kea dhcp4 server when guest interface will be ready
|
||||
|
||||
# include locking functions
|
||||
. /etc/xen/scripts/locking.sh
|
||||
set +u
|
||||
|
||||
# $1 is vif name, e.g. "vif/15/0"
|
||||
# returns 0 on success,
|
||||
# 1 otherwize
|
||||
#
|
||||
|
||||
check_if_vif_is_ready() {
|
||||
ret=($(xl network-list "${guestname}" | grep "${1}"))
|
||||
# ${ret[4]} is network interface status value
|
||||
# 1 means vif is not ready
|
||||
# 4 means vif is ready
|
||||
[ "${ret[4]}" = "4" ] && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
case "${XENGUEST_NETWORK_TYPE:-}" in
|
||||
nat)
|
||||
vif_name="$(xl network-list ${guestname} | grep -o vif.*)"
|
||||
|
||||
for try in {1..20}
|
||||
do
|
||||
if check_if_vif_is_ready "${vif_name}"; then
|
||||
claim_lock "vif-nat-kea"
|
||||
keactrl reload
|
||||
release_lock "vif-nat-kea"
|
||||
exit 0
|
||||
fi
|
||||
echo "Waiting for ${vif_name} - network interface is not ready..."\
|
||||
" try #${try}" >> "${LOGFILE}" 2>&1
|
||||
sleep 1
|
||||
done
|
||||
echo "ERROR: Failed to get ${vif_name} "\
|
||||
"network interface ready!" >> "${LOGFILE}" 2>&1
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo "No action needed" >> "${LOGFILE}" 2>&1
|
||||
;;
|
||||
esac
|
||||
@@ -47,12 +47,13 @@ XENGUEST_IMAGE_SRC_URI_DISK_FILES ??= ""
|
||||
# Add xen files
|
||||
# Any extrafiles files to be added to XENGUEST_IMAGE_SRC_URI_XEN_FILES should
|
||||
# be performed via XENGUEST_IMAGE_SRC_URI_XEN_FILES_append.
|
||||
# The dhcpd-params.cfg holds the dhcpd configuration for Dom0. And it is used
|
||||
# when XENGUEST_IMAGE_NETWORK_TYPE="nat". Any customizations to it should be
|
||||
# performed by replacing it via a xenguest-network.bbappend.
|
||||
# The kea-subnet4.json holds the kea dhcp4 subnet configuration for Dom0.
|
||||
# And it is used when XENGUEST_IMAGE_NETWORK_TYPE="nat".
|
||||
# Any customizations to it should be performed by replacing it
|
||||
# via a xenguest-network.bbappend.
|
||||
# The XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT file is only added if the
|
||||
# variable is set.
|
||||
XENGUEST_IMAGE_SRC_URI_XEN_FILES = "file://dhcpd-params.cfg \
|
||||
XENGUEST_IMAGE_SRC_URI_XEN_FILES = "file://kea-subnet4.json \
|
||||
${@ "file://" + d.getVar('XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT') \
|
||||
if d.getVar('XENGUEST_IMAGE_NAT_PORT_FORWARD_SCRIPT') else "" } \
|
||||
"
|
||||
|
||||
@@ -21,12 +21,22 @@ SRC_URI = " \
|
||||
file://xenguest-network-bridge-dhcp.cfg.in \
|
||||
file://network-bridge.sh.in \
|
||||
file://00-vif-xenguest.hook \
|
||||
file://xenguest-network-init-post.sh \
|
||||
file://kea-dhcp4.conf \
|
||||
file://kea-restore-default-config \
|
||||
"
|
||||
PACKAGES =+ "${PN}-kea-dhcp4"
|
||||
|
||||
# Bridge configurator needs to run before S01networking init script
|
||||
# Prefix with a_ to make sure it is executed in runlevel 01 before others
|
||||
INITSCRIPT_NAME = "a_xenguest-network-bridge"
|
||||
INITSCRIPT_PARAMS = "defaults 01"
|
||||
INITSCRIPT_PACKAGES = "${PN} ${PN}-kea-dhcp4"
|
||||
INITSCRIPT_NAME_${PN} = "a_xenguest-network-bridge"
|
||||
INITSCRIPT_PARAMS_${PN} = "defaults 01"
|
||||
|
||||
# Kea configuration needs to be restored before kea init scripts:
|
||||
# Kea dhcp4 server is 30, so lets use 20, to have higher priority
|
||||
INITSCRIPT_NAME_${PN}-kea-dhcp4 = "kea-restore-default-config"
|
||||
INITSCRIPT_PARAMS_${PN}-kea-dhcp4 = "defaults 20"
|
||||
|
||||
inherit update-rc.d
|
||||
|
||||
@@ -43,7 +53,7 @@ do_install() {
|
||||
> ${WORKDIR}/network-bridge.sh
|
||||
install -d -m 755 ${D}${sysconfdir}/init.d
|
||||
install -m 755 ${WORKDIR}/xenguest-network-bridge \
|
||||
${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
|
||||
${D}${sysconfdir}/init.d/${INITSCRIPT_NAME_${PN}}
|
||||
install -d -m 755 ${D}${sysconfdir}/network/interfaces.d
|
||||
install -m 755 ${WORKDIR}/xenguest-network-bridge.cfg \
|
||||
${D}${sysconfdir}/network/interfaces.d/.
|
||||
@@ -54,11 +64,22 @@ do_install() {
|
||||
install -d ${D}${sysconfdir}/xen/scripts/vif-post.d
|
||||
install -m 755 ${WORKDIR}/00-vif-xenguest.hook \
|
||||
${D}${sysconfdir}/xen/scripts/vif-post.d/.
|
||||
|
||||
install -d -m 755 ${D}${sysconfdir}/xenguest/init.post
|
||||
install -m 755 ${WORKDIR}/xenguest-network-init-post.sh \
|
||||
${D}${sysconfdir}/xenguest/init.post/.
|
||||
|
||||
install -m 755 ${WORKDIR}/kea-restore-default-config \
|
||||
${D}${sysconfdir}/init.d/.
|
||||
install -d -m 755 ${D}${sysconfdir}/kea/
|
||||
install -m 755 ${WORKDIR}/kea-dhcp4.conf \
|
||||
${D}${sysconfdir}/kea/kea-dhcp4.conf.original
|
||||
}
|
||||
|
||||
RDEPENDS_${PN} += "bridge-utils \
|
||||
iptables \
|
||||
dhcp-server \
|
||||
kea \
|
||||
${PN}-kea-dhcp4 \
|
||||
kernel-module-xt-tcpudp \
|
||||
kernel-module-xt-physdev \
|
||||
kernel-module-xt-comment \
|
||||
@@ -68,3 +89,7 @@ RDEPENDS_${PN} += "bridge-utils \
|
||||
FILES_${PN} += "${sysconfdir}/network/interfaces.d/xenguest-network-bridge.cfg"
|
||||
FILES_${PN} += "${sysconfdir}/xenguest/init.pre/network-bridge.sh"
|
||||
FILES_${PN} += "${sysconfdir}/xen/scripts/vif-post.d/00-vif-xenguest.hook"
|
||||
|
||||
FILES_${PN}-kea-dhcp4 = "${sysconfdir}/kea/kea-dhcp4.conf.original"
|
||||
FILES_${PN}-kea-dhcp4 += "${sysconfdir}/init.d/${INITSCRIPT_NAME_${PN}-kea-dhcp4}"
|
||||
FILES_${PN}-kea-dhcp4 += "${sysconfdir}/xenguest/init.post/xenguest-network-init-post.sh"
|
||||
|
||||
Reference in New Issue
Block a user