SUMMARY: bind: Address already in use

From: Oddvar Andreassen (oda@fs.osl.scn.de)
Date: Fri Aug 09 1996 - 08:38:35 CDT


Thanks for many replies.
The following was suggested to find which process was using the port address:

netstat -a
rpcinfo -p
arp -a
ps -ef | grep bootpd
lsof
fuser

'netstat -a' and 'rpcinfo -p' solved the problem for me -
they showed that port 67/udp was already occupied by bootps and caused
the error message when I tried to start bootpd manually.
This was caused by a bootpd line in /etc/inetd.conf (entered by the
HP JetAdmin installation script).
In earlier versions bootpd was started only when needed - such as when an
HP printer was switched on, and was controlled by inetd. For some reason this
does not work with newer versions, and I found a recommendation that for
'larger networks' it was adviced to leave the bootpd process running all
the time by starting it with 'bootpd -s', which was what I was trying.
Defining 'bootpd -s' in inetd.conf did not work, it only occupied the port
but did not start the process, and prevented starting the process manually.
The solution for me is to remove the bootpd line from inetd.conf, and start
'/usr/sbin/bootpd -s' from a file in /etc/rc3.d. Now it works.

'arp -a' could have been used to check a printer address conflict,
but this was not the problem in this case.

'ps -ef' was not useful as there were no bootpd process.

lsof and fuser are PD utilities which I have not tried yet.

I'm quoting some of the more detailed replies:
----------------
also, P.Rajasekar wrote:
         You can findout which process is holding up a particular port
         using the netstat -a command and by looking for the ports of interest.

         You may get this error if you are restarting the bootpd daemon
         frequently. Try decresing the tcp_close_wait_interval interval
         using the ndd utility and run the prcess again.

----------------
and from Dennis F. Morse:
Check for two "inetd" processes running. This can easily happen if you
edited /rc2.d/S72inetsvc and there is a backup file, such as S72inetsvc~
from emacs. I wrote a script called "/etc/rcS.d/S99cleanup_rc_dirs" to make
sure this doesn't happen. All you need to do is drop it into /etc/rcS.d and
it will link itself in the other appropriate rc*.d and init.d directories.
It will cleanup on both startup and shutdown.

---------------
from Reto Lichtensteiger:
Typically, this shows up if inetd is configured to listen on a port and
then start a subdaemoon, so check your inetd.conf file for a bootp entry.

If that isn't it, use "lsof" (ftp://vic.cc.purdue.edu/pub/tools/unix/lsof)
with the -n switch:

   % lsof -n | egrep 'COMMAND|UDP'
   COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
   perfmeter 14198 rali 4u inet 0xff64f90c 0t0 UDP *:3535
   fvwm 14201 rali 6u inet 0xff64b60c 0t0 UDP *:3532
   netscape_ 14539 rali 8u inet 0xff64f10c 0t0 UDP *:3612
   ftptool 17137 rali 4u inet 0xff64f38c 0t0 UDP *:4237
   rlogin 17846 rali 4u inet 0xff64fa0c 0t0 UDP *:638
   rlogin 17847 rali 4u inet 0xff64fa0c 0t0 UDP *:638
   elm 18071 rali 4u inet 0xff651b8c 0t0 UDP *:4346
-----------------

John Nguyen:
Don't worry about the /etc/services. This file has nothing to do
with the error that you've received. The /etc/services is the file
that definded well-known port and the protocol that used. There's
no need to mess with this file unless you are writing your own code
or installing third party software that required access to a certain
port number.

Now, back to the bootp issue. Bootp is a connectionless connection
and is controlled by inetd daemon. When you setup your printer,
I believe you have to specify an IP address for the printer.
The above error indicated that you are having IP address conflict.
If not, then it's hardware address conflict.

If you are using NIS, check out your hosts map. If you are using
DNS, check out your DNS forward and reverse name resolution. If
you are not using the above, check out /etc/hosts. Make sure that
you don't have any duplicate IP addresses or host names.

To check for conflict hardware addresses, you will need to run
'arp -a' command. Might want to pipe this to more. It will show
you all the MAC addresses being cached.
----------------------

My original posting was:

When starting a process
(in this case bootpd, used for HP's JetAdmin printer software)
gives the following message:

        bootpd[27973]: bind: Address already in use

how do I find out who is using the address ??

The address is defined in /etc/services as
        bootps 67/udp
        bootpc 68/udp

Platform Solaris 2.4.

-------------------------------------------------------------------
Oddvar Andreassen Siemens A/S, Defence Electronics, Oslo, Norway
oda@fs.osl.scn.de Voice +47 22 63 31 72 Fax +47 22 63 41 07

Status: RO



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:11:07 CDT