1 #!/usr/bin/ksh
2 #
3 # CDDL HEADER START
4 #
5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License, Version 1.0 only
7 # (the "License"). You may not use this file except in compliance
8 # with the License.
9 #
10 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11 # or http://www.opensolaris.org/os/licensing.
12 # See the License for the specific language governing permissions
13 # and limitations under the License.
14 #
15 # When distributing Covered Code, include this CDDL HEADER in each
16 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17 # If applicable, add the following below this CDDL HEADER, with the
18 # fields enclosed by brackets "[]" replaced with your own identifying
19 # information: Portions Copyright [yyyy] [name of copyright owner]
20 #
21 # CDDL HEADER END
22 #
23 #
24 #ident "%Z%%M% %I% %E% SMI"
25 #
26 # Copyright (c) 2001 by Sun Microsystems, Inc.
27 # All rights reserved.
28 #
29
30 #
31 # Source the utilities.
32 #
33 DIRNAME=`dirname $0`
34 . ${DIRNAME}/utilities.san
35
36 #
37 # Process the input arguments.
38 #
39 VALIDOPTS=dr:p:
40 process_args $@
41
42 #
43 # In case the tester wants to see script output, allow them
44 # to run in debug mode.
45 #
46 TESTNAME=`basename $0`
47 if [ ! -z "${DEBUG}" ]
48 then
49 OUTFILE=/tmp/${TESTNAME}.debug.$$
50 echo "Output from test: ${TESTNAME}" >${OUTFILE}
51 echo >>${OUTFILE}
52 echo "debug output can be found at ${OUTFILE}"
53 else
54 OUTFILE=/dev/null
55 fi
56
57 #
58 # Set variables.
59 #
60 SRVNAME=`uname -n`
61 SRVADDR=`get_server_ip`
62
63 #
64 # Determine subnet, netmask, and broadcast address.
65 #
66 get_default_class ${SRVADDR} | read DEFNET DEFMASK
67 SUBNET=`get_netmask ${SRVADDR}`
68 if [ -z "${SUBNET}" ]
69 then
70 if [ "${DEFNET}" != "${SRVADDR}" ]
71 then
72 # likely subnetted/supernetted.
73 print - "\n\n###\tWarning\t###\n"
74 print - "Network ${SRVADDR} is netmasked, but no entry was found in the 'netmasks'\ntable; please update the 'netmasks' table in the appropriate\nnameservice before continuing (see /etc/nsswitch.conf).\n" >&2
75 return 1
76 else
77 # use the default.
78 SUBNET="${DEFMASK}"
79 fi
80 fi
81
82 SUBNETADDR=`get_subnet_addr ${SRVADDR} ${SUBNET}`
83
84 #
85 # Verify that the network table exists.
86 #
87 NETTABS=`/usr/sbin/pntadm -r ${DHCPRSRC} -p ${DHCPPATH} -L 2>>${OUTFILE}`
88 NETTAB=`echo ${NETTABS} | fgrep ${SUBNETADDR}`
89 if [ -z ${NETTAB} ]
90 then
91 echo "Network table for ${SUBNETADDR} does not exist."
92 echo "${TESTNAME} - Test failed!"
93 exit 1
94 fi
95
96 #
97 # Delete the client entry from the table.
98 #
99 CLIENTID="01AABBCCDDEEFF"
100 CADDR=${SRVADDR}
101 HOST="TESTCLIENT"
102
103 /usr/sbin/pntadm -r ${DHCPRSRC} -p ${DHCPPATH} -D ${CADDR} ${SUBNETADDR} >>${OUTFILE} 2>&1
104 RET=$?
105 if [ "${RET}" != "0" ]
106 then
107 echo "Error deleting entry ${CADDR} from table ${SUBNETADDR} = ${RET}"
108 echo "${TESTNAME} - Test failed!"
109 exit 1
110 fi
111
112 #
113 # Verify that entry was deleted.
114 #
115 DATAFILE=/tmp/${TESTNAME}.data.$$
116 /usr/sbin/pntadm -r ${DHCPRSRC} -p ${DHCPPATH} -P ${SUBNETADDR} >${DATAFILE} 2>>${OUTFILE}
117 ENTRY=`grep "^${CLIENTID}" ${DATAFILE}`
118 if [ ! -z "${ENTRY}" ]
119 then
120 rm ${DATAFILE}
121 echo "Client entry still found in ${SUBNETADDR}"
122 echo "${TESTNAME} - Test failed!"
123 exit 1
124 fi
125 rm ${DATAFILE}
126
127 echo "${TESTNAME} - Test passed."
128 exit 0