1f08c3bdfSopenharmony_ci#!/bin/sh
2f08c3bdfSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later
3f08c3bdfSopenharmony_ci# Copyright (c) 2014-2018 Oracle and/or its affiliates. All Rights Reserved.
4f08c3bdfSopenharmony_ci# Copyright (c) 2018 Petr Vorel <pvorel@suse.cz>
5f08c3bdfSopenharmony_ci# Copyright (c) International Business Machines  Corp., 2001
6f08c3bdfSopenharmony_ci#
7f08c3bdfSopenharmony_ci# Author:       Manoj Iyer, manjo@mail.utexas.edu
8f08c3bdfSopenharmony_ci# Author:       Alexey Kodanev alexey.kodanev@oracle.com
9f08c3bdfSopenharmony_ci
10f08c3bdfSopenharmony_ciTST_SETUP="setup_dhcp"
11f08c3bdfSopenharmony_ci
12f08c3bdfSopenharmony_cidhcp_name="dhcpd"
13f08c3bdfSopenharmony_cilease_dir="/var/lib/misc"
14f08c3bdfSopenharmony_cilease_file="$lease_dir/dhcpd.leases_tst"
15f08c3bdfSopenharmony_ci
16f08c3bdfSopenharmony_cisetup_dhcp()
17f08c3bdfSopenharmony_ci{
18f08c3bdfSopenharmony_ci	[ "$TST_IPV6" ] && lease="$lease_dir/dhcpd6.leases_tst"
19f08c3bdfSopenharmony_ci	dhcp_lib_setup
20f08c3bdfSopenharmony_ci}
21f08c3bdfSopenharmony_ci
22f08c3bdfSopenharmony_cisetup_dhcpd_conf()
23f08c3bdfSopenharmony_ci{
24f08c3bdfSopenharmony_ci	if [ -f /etc/dhcpd.conf ]; then
25f08c3bdfSopenharmony_ci		DHCPD_CONF="/etc/dhcpd.conf"
26f08c3bdfSopenharmony_ci	elif [ -f /etc/dhcp/dhcpd.conf ]; then
27f08c3bdfSopenharmony_ci		DHCPD_CONF="/etc/dhcp/dhcpd.conf"
28f08c3bdfSopenharmony_ci	else
29f08c3bdfSopenharmony_ci		tst_brk TBROK "failed to find dhcpd.conf"
30f08c3bdfSopenharmony_ci	fi
31f08c3bdfSopenharmony_ci
32f08c3bdfSopenharmony_ci	mv $DHCPD_CONF dhcpd.conf
33f08c3bdfSopenharmony_ci	[ $? -ne 0 ] && tst_brk TBROK "failed to backup dhcpd.conf"
34f08c3bdfSopenharmony_ci
35f08c3bdfSopenharmony_ci	mv tst_dhcpd.conf $DHCPD_CONF
36f08c3bdfSopenharmony_ci	[ $? -ne 0 ] && tst_brk TBROK "failed to create dhcpd.conf"
37f08c3bdfSopenharmony_ci}
38f08c3bdfSopenharmony_ci
39f08c3bdfSopenharmony_cistart_dhcpd()
40f08c3bdfSopenharmony_ci{
41f08c3bdfSopenharmony_ci	touch $lease_file
42f08c3bdfSopenharmony_ci	dhcpd -lf $lease_file -$TST_IPVER $iface0 > $log 2>&1
43f08c3bdfSopenharmony_ci}
44f08c3bdfSopenharmony_ci
45f08c3bdfSopenharmony_cistart_dhcp()
46f08c3bdfSopenharmony_ci{
47f08c3bdfSopenharmony_ci	cat > tst_dhcpd.conf <<-EOF
48f08c3bdfSopenharmony_ci	ddns-update-style none;
49f08c3bdfSopenharmony_ci	update-static-leases off;
50f08c3bdfSopenharmony_ci	subnet 10.1.1.0 netmask 255.255.255.0 {
51f08c3bdfSopenharmony_ci		range 10.1.1.100 10.1.1.100;
52f08c3bdfSopenharmony_ci		default-lease-time 60;
53f08c3bdfSopenharmony_ci		max-lease-time 60;
54f08c3bdfSopenharmony_ci	}
55f08c3bdfSopenharmony_ci	EOF
56f08c3bdfSopenharmony_ci	setup_dhcpd_conf
57f08c3bdfSopenharmony_ci	start_dhcpd
58f08c3bdfSopenharmony_ci}
59f08c3bdfSopenharmony_ci
60f08c3bdfSopenharmony_cistart_dhcp6()
61f08c3bdfSopenharmony_ci{
62f08c3bdfSopenharmony_ci	cat > tst_dhcpd.conf <<-EOF
63f08c3bdfSopenharmony_ci	ddns-update-style none;
64f08c3bdfSopenharmony_ci	update-static-leases off;
65f08c3bdfSopenharmony_ci	subnet6 fd00:1:1:2::/64 {
66f08c3bdfSopenharmony_ci		range6 fd00:1:1:2::100 fd00:1:1:2::100;
67f08c3bdfSopenharmony_ci		default-lease-time 60;
68f08c3bdfSopenharmony_ci		max-lease-time 60;
69f08c3bdfSopenharmony_ci	}
70f08c3bdfSopenharmony_ci	EOF
71f08c3bdfSopenharmony_ci	setup_dhcpd_conf
72f08c3bdfSopenharmony_ci	start_dhcpd
73f08c3bdfSopenharmony_ci}
74f08c3bdfSopenharmony_ci
75f08c3bdfSopenharmony_cicleanup_dhcp()
76f08c3bdfSopenharmony_ci{
77f08c3bdfSopenharmony_ci	[ -f dhcpd.conf ] && mv dhcpd.conf $DHCPD_CONF
78f08c3bdfSopenharmony_ci	rm -f $lease_file
79f08c3bdfSopenharmony_ci}
80f08c3bdfSopenharmony_ci
81f08c3bdfSopenharmony_ciprint_dhcp_version()
82f08c3bdfSopenharmony_ci{
83f08c3bdfSopenharmony_ci	dhcpd --version 2>&1
84f08c3bdfSopenharmony_ci}
85f08c3bdfSopenharmony_ci
86f08c3bdfSopenharmony_ci. dhcp_lib.sh
87f08c3bdfSopenharmony_citst_run
88