Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ukma!xanth!lll-winken!uunet!lupine!djm From: djm@lupine.UUCP (Dave Mackie) Newsgroups: comp.protocols.tcp-ip Subject: Re: Follow-up to my ICMP_UNREACH_PORT question Summary: Answer to where is EPORTUNREACH Message-ID: <363@lupine.UUCP> Date: 8 May 89 19:26:15 GMT References: <8905032253.AA00554@lear.ultra.com> Organization: Network Computing Devices Lines: 19 > PS: Actually, I do have one continuing question: Could some BSD guru > out there please tell me if the BSD UDP in fact DOES notify anyone > when it gets an ICMP_UNREACH_PORT, and how? I've got the 4.3 source > but not the familiarity to answer this definitively. I don't SEE any > such notification, and there is no EPORTUNREACH sys/errno.h, but ... This isn't pretty! IP receives the ICMP message and eventually calls udp_ctlinput(). UDP then use inetctlerrmap[] (ip_input.c) to map the ICMP type to a BSD error number. In this case ICMP PORT UNREACHABLE gets mapped to ECONNREFUSED. The routine in_pcbnotify() then gets called to find the correct pcb to deliver the error to. If your just using sendto() then there is no pcb with the correct source/destination address pair in the pcb list, and so the error message gets dropped. Dave Mackie Network Computing Devices djm@ncd.com