Beispiel #1
0
int udp_port_unreach(in_addr_t __faddr, uint16_t __fport, 
					 in_addr_t __laddr, uint16_t __lport)
{
	struct udp_pcb * up;

	up = (struct udp_pcb *)pcb_wildlookup(__faddr, __fport, 
										  __laddr, __lport, &__udp__.active);
	if (up == NULL) {
		DCC_LOG4(LOG_TRACE, "not found: %I:%d > %I:%d", 
				 __laddr, ntohs(__lport), __faddr, ntohs(__lport));
		return -1;
	}

	/* set the error flag */
	up->u_icmp_err = 1;

	/* unconnect the PCB */
	up->u_faddr = INADDR_ANY;
	up->u_fport = 0;

	/* notify the application */
	__os_cond_signal(up->u_rcv_cond);

	return 0;
}
Beispiel #2
0
inline struct tcp_listen_pcb * tcp_listen_lookup(in_addr_t __faddr, 
												 uint16_t __fport, 
												 in_addr_t __laddr, 
												 uint16_t __lport)
{
	return (struct tcp_listen_pcb *)pcb_wildlookup(__faddr, __fport, 
												  __laddr, __lport, 
												  &__tcp__.listen);
}