SCCS-vsn: sys/netinet/tcp_subr.c 6.5
SCCS-vsn: sys/netinet/udp_usrreq.c 6.13
-/* tcp_subr.c 6.4 84/11/14 */
+/* tcp_subr.c 6.5 85/05/27 */
#include "param.h"
#include "systm.h"
#include "param.h"
#include "systm.h"
extern u_char inetctlerrmap[];
extern u_char inetctlerrmap[];
+ int tcp_quench(), in_rtchange();
if (cmd < 0 || cmd > PRC_NCMDS)
return;
if (cmd < 0 || cmd > PRC_NCMDS)
return;
- sin = &((struct icmp *)arg)->icmp_ip.ip_dst;
- in_pcbnotify(&tcb, sin, 0, tcp_quench);
+ in = &((struct icmp *)arg)->icmp_ip.ip_dst;
+ in_pcbnotify(&tcb, in, 0, tcp_quench);
+ break;
+
+ case PRC_REDIRECT_NET:
+ case PRC_REDIRECT_HOST:
+ in = &((struct icmp *)arg)->icmp_ip.ip_dst;
+ in_pcbnotify(&tcb, in, 0, in_rtchange);
- /* these are handled by ip */
+ in = &((struct sockaddr_in *)arg)->sin_addr;
+ goto notify;
+
case PRC_HOSTDEAD:
case PRC_HOSTUNREACH:
case PRC_HOSTDEAD:
case PRC_HOSTUNREACH:
+ in = (struct in_addr *)arg;
+ goto notify;
- sin = &((struct icmp *)arg)->icmp_ip.ip_dst;
- in_pcbnotify(&tcb, sin, (int)inetctlerrmap[cmd], tcp_abort);
+ if (inetctlerrmap[cmd] == 0)
+ return; /* XXX */
+ in = &((struct icmp *)arg)->icmp_ip.ip_dst;
+notify:
+ in_pcbnotify(&tcb, in, (int)inetctlerrmap[cmd], tcp_abort);
-/* udp_usrreq.c 6.12 85/05/27 */
+/* udp_usrreq.c 6.13 85/05/27 */
#include "param.h"
#include "dir.h"
#include "param.h"
#include "dir.h"