santhi wrote:
>> On Thu, 31 Aug 2006, santhi wrote:
>>> /usr/ccs/bin/ld: Unsatisfied symbols:
>>> ntohl (first referenced in sshconnect.o) (code)
>>> ntohs (first referenced in ssh.o) (code)
>>> htonl (first referenced in sshconnect.o) (code)
>>> htons (first referenced in
>>> openbsd-compat//libopenbsd-compat.a(rresvport.o)) (code)
>>> *** Error exit code 1

> Affected files are
> 01) channels.c
> 02) ssh.c
> 03) openbsd-compat/bindresvport.c
> 04) openbsd-compat/fake-rfc2553.c
> 05) openbsd-compat/getrrsetbyname.c
> 06) openbsd-compat/rresvport.c
> 07) sshconnect.c
> 08) openbsd-compat/port-tun.c
> 09) ssh-rand-helper.c
> 10) ssh-keyscan.c
> 11) openbsd-compat/bsd-cray.c
> 12) openbsd-compat/inet_aton.c
> Among the above files, the patch is applied to "bindresvport.c" and
> "rresvport.c". But we get the same linker error,
> while we compile other files. Any suggestions?

Thanks for the report.

Looking at the headers on HP-UX, htonl and friends are in arpa/inet.h
(if _XOPEN_SOURCE_EXTENDED is defined) or netinet/in.h (if
XOPEN_SOURCE_EXTENDED is *not* defined).

So, since we define _XOPEN_SOURCE_EXTENDED, basically any place where we
include netinet/in.h for the htonl macros we also need to include
arpa/inet.h. I'll go through your list of affected files.

I'm not sure why I've not seen that problem on HP-UX with gcc, though.

> Note: We found that file is missing in includes.h file.

We're trying to move away from a one-includes-fits-all approach and put
the headers in the .c files where they're required. Reducing the scope
of the includes should reduce the chance of unexpected interactions
between them.

Darren Tucker (dtucker at
GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4 37C9 C982 80C7 8FF4 FA69
Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.
openssh-unix-dev mailing list