Patch Name: PHNE_19095 Patch Description: s700_800 10.10,10.20 cumulative bootpd/DHCP patch Creation Date: 00/07/04 Post Date: 00/07/19 Hardware Platforms - OS Releases: s700: 10.10 10.20 s800: 10.10 10.20 Products: N/A Filesets: InternetSrvcs.INETSVCS-BOOT InternetSrvcs.INET-ENG-A-MAN Automatic Reboot?: No Status: General Release Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHNE_19095 Symptoms: PHNE_19095: 1. JAGab46322 / SR#8606108426 : If there is no dhcptab file and there is an entry for the client in the bootptab file, then dhcpclient is unable to boot from the dhcp/bootp server. 2. JAGab37715 / SR#8606138062: bootpd and bootpquery does not start if a host has more than 10 network interfaces. 3. JAGaa93203 / SR#5003451617 : bootpd overwrites permanent and in-use ARP cache entry. 4. JAGaa72836 /SR#4701422261 : bootpd sends reply even if the hardware address length sent by bootp client does not match with corresponding hardware address type. 5 JAGaa72835 / SR#4701415463 : The invalid hardware address type sent by bootp client causes bootpd to die. 6. JAGaa26728 / SR#5003329854 : dhcptools does not work with bootpd running in standalone mode. PHNE_17123: 1.Bootpd dies when bad hardware type is encountered. 2.Bootpd messages filling up syslog.log. 3.man page does not show up in bootpd patch PHNE_15196. PHNE_15196: /etc/dhcpdb file created with incorrect permissions. Bootpd does not check for parameters. DHCP callback parameters are inconsistent. Bootpd does not create temporary files properly. Bootpd is not killed properly before installing PHNE_12141. Bootpd manpages does not document minimum acceptable values for lease renewal and rebind times. Bootpd manpage does not show lease renewal and rebind times in percentages. PHNE_14472: DHCP server dies unexpectedly PHNE_13648: DHCP server sometimes fails to update the dhcpdb file correctly. DHCP server sometimes gives out duplicate addresses. PHNE_12141: DHCP server sometimes fails to renew an existing lease, especially if client has more than one lease on more than one subnet. DHCP server cannot handle heavy traffic (more than 10 requests per second) due to time spent writing database file /etc/dhcpdb. PHNE_10211: DHCP incorrectly reissues existing leases to new clients DHCP sometimes issues a lease for address 0.0.0.0 bootpd returns incorrect value for bootfile size bootpd dies at debug level 7 PHNE_9139: bootpquery/jetadmin cannot configure a printer. Short leases can get lost if bootpd stays alive a long time (much longer than the lease time). Addresses are not reclaimed properly when the pool group is full. PHNE_7689: If the number of interfaces approaches 10 (or goes over 10), the server will not find some of them. It will then not be able to send boot replies over those unfound interfaces. The auto flag does not work properly with the "to" (time offset) tag. Dynamic bootp clients get a different address for each request, and in the process the /etc/dhcpdb file can get corrupted. (This problem is on 10.10). Defect Description: PHNE_19095: 1. JAGab46322 / SR#8606108426 : If there is no dhcptab file and there is an entry for the client in the bootptab file, bootpd was reallocating minimum lease period of 60 seconds to bootp client which was already allocated infinite lease. HP-UX dhcpclient rejects lease period less than 120 seconds. Resolution: bootpd has now been prevented from reallocating lease to bootp clients, which had already been given infinite lease. 2. JAGab37715 / SR#8606138062 : bootpd and bootpquery does not start if the host has more than 10 network interfaces because the limit was set to 10. Resolution: SMALL NUMBER OF INTERFACES limit has been increased from 10 to 32 and if the number of network interfaces in a host exceeds 32, the limit is switched to LARGE NUMBER OF INTERFACES which is 2000. 3. JAGaa93203 / SR#5003451617 : bootpd was blindly overwriting the ARP cache entry without checking if it was a permanent and in-use entry. Resolution: The ARP cache entry is checked to see whether it is permanent and in-use. If it is so, it is not overwritten. 4. JAGaa72836 /SR#4701422261 : bootpd does not use the hardware address length sent by the client, rather it finds the value corresponding to hardware address type. Using this correct value bootpd used to reply in usual manner. Resolution: The H/W address length sent by the client is checked before processing the client's request. If it is invalid, the request is ignored. 5. JAGaa72835 / SR#4701415463 : The hardware address type sent by client was not being checked by bootpd. The invalid value led to wrong H/W address length and resulted in termination of bootpd because of segment violation. Resolution : The H/W address type sent by the client is checked before processing the client's request. If it is invalid, the request is ignored. 6. JAGaa26728 / SR#5003329854 : dhcptools was not working in standalone mode as a variable was being set before the socket descriptor was assigned any value. Resolution: The variable setting is done after the socket descriptor has been assigned a value. PHNE_17123: 1.Bootpd dies when it finds bad "htype" value in BOOTREQUEST message. 2.Bootpd fills up syslog with events that are confusing or not cared about. The logging and debug level were not in synch with each other. 3.The bootpd manpage file was uncompressed. PHNE_15196: Bad umask when creating /etc/dhcpdb Bootpd does not check for parameters. ER: make DHCP callback parameters consistent Bootpd does not create temporary files properly. Patch PHNE_12141 has errors in postinstall and postremove scripts. Bootpd manpages does not document minimum acceptable values for lease renewal and rebind times. Bootpd manpage does not show lease renewal and rebind times in percentages. PHNE_14472: Server dies on signal 10 PHNE_13648: The database file dhcpdb in the server is not updated when the client id field is used. Because of corrupted lease time entry in the dhcpdb, when bootpd wakes up and reads the dhcpdb, the internal data structure gets corrupted and hence it gives out duplicate ip addresses. PHNE_12141: DHCP server will sometimes calculate an internal table offset incorrectly when a single client has more than one address lease in the table. DHCP server writes the entire database file to /etc/dhcpdb on each transaction. When the number of transactions is large (greater than 10 per second) and the number of clients is large (greater than 2000) and the disk is not the fastest in the world (single-ended SCSI-1) and the clients do not implement the exponential timeout and retry scheme required in RFC1531 (Microsoft Win95) then the clients can time out and give up before the DHCPOFFER gets back to them. PHNE_10211: build_offer.c does not return a proper value when the debug level is 1,2, or 3 PHNE_9139: Jetadmin confirms a printer configuration with bootpd by sending out a bootpquery request. This was broken by changes at transport level in HP-UX 10.20. DHCP clients could have their valid leases disappear before the lease expiration time was over if the DHCP server is very busy and stays alive for a long time. Addresses are not reclaimed properly when a pool group is full, and clients that do not use a client-ID could be offered one of these "recycled" addresses but be rejected because the blank client-ID does not match the (non-blank) client-ID of the previous (now expired) lease holder. PHNE_7689: There was a limit on the number of entries that the bootp server would accept in an ioctl call to discover the interfaces on the system. This ioctl returns info on the interfaces on the system, plus all SLIP connections. If the number of interfaces plus SLIP connections approaches 10, this could cause a problem. The time offset problem was caused because the gettimeofday call did not return the timezone information, so a different call is not used. If the tag "to" is used with a value of "auto", then this patch should be used. The previous patch introduced a problem with the handling of dynamic bootp clients, using a bad hash lookup. If the previous patch (PHNE_7020) was used, this patch should replace it, if dynamic bootp clients are allowed. SR: 8606108426 8606138062 5003451617 4701422261 4701415463 5003329854 5003443697 5003435206 5003391193 5003390955 5003401000 5003330167 5003335158 5003338111 5003277400 5000715722 5003318659 Patch Files: /usr/lbin/bootpd /usr/sbin/bootpquery /usr/sbin/dhcptools /usr/lib/libdhcp.1 /usr/share/man/man1m.Z/bootpd.1m what(1) Output: /usr/lbin/bootpd: bootpd 2.4 #1.17.112.8: Tue Jun 27 07:04:50 GMT 2000 Copyright (c) 1988 by Carnegie Mellon Copyright (c) 1995-7 by Hewlett-Packard bootpd.c: $Revision: 1.28.112.39 $ $Date: 99/07/19 2 1:13:14 $ build_offer.c: PHNE_19095 $Revision: 1.1.112.41 $ $D ate: 2000/06/14 04:53:19 $ readfile.c experimental: $Revision: 1.9.112.20 $ $Da te: 98/10/14 23:45:39 $ /usr/sbin/bootpquery: $Revision: 1.11.112.5 $ $Date: 99/07/19 21:18:19 $ /usr/sbin/dhcptools: None /usr/lib/libdhcp.1: None /usr/share/man/man1m.Z/bootpd.1m: None cksum(1) Output: 435163331 167936 /usr/lbin/bootpd 3597609516 20480 /usr/sbin/bootpquery 894563054 73728 /usr/sbin/dhcptools 3804511377 81920 /usr/lib/libdhcp.1 605780469 18626 /usr/share/man/man1m.Z/bootpd.1m Patch Conflicts: None Patch Dependencies: s700: 10.10: PHNE_13471 s700: 10.20: PHNE_13469 s800: 10.10: PHNE_13470 s800: 10.20: PHNE_13468 Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_7689 PHNE_9139 PHNE_10211 PHNE_12141 PHNE_13648 PHNE_14472 PHNE_15196 PHNE_17123 Equivalent Patches: None Patch Package Size: 420 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHNE_19095 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHNE_19095.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHNE_19095. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. WARNING: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHNE_19095.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_19095.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: A new field can now be added to /etc/dhcptab to improve the performance of the DHCP server. Using this new feature will delay the writing of the database by a few seconds, and can be used if clients are timing out after 2 or 4 seconds although the DHCP server does eventually respond. This is very popular with large numbers of Win95 clients. The new tag is: dhcpdb-write-perf=N: where N is an integer between 0 and 600. We recommend setting N=5. This is a system-wide feature, so the top of your /etc/dhcptab might look like this: DHCP_SERVER_SETTINGS:\ dhcpdb-write-perf=10: