static char sccsid
[] = "@(#)af.c 4.9 %G%";
* Address family support routines
int null_hash(), null_netmatch(), null_output(),
null_portmatch(), null_portcheck(),
null_checkhost(), null_canon();
int inet_hash(), inet_netmatch(), inet_output(),
inet_portmatch(), inet_portcheck(),
inet_checkhost(), inet_canon();
{ null_hash, null_netmatch, null_output, \
null_portmatch, null_portcheck, null_checkhost, \
{ inet_hash, inet_netmatch, inet_output, \
inet_portmatch, inet_portcheck, inet_checkhost, \
struct afswitch afswitch
[AF_MAX
] =
{ NIL
, NIL
, INET
, INET
, NIL
, NIL
, NIL
, NIL
, NIL
, NIL
, NIL
};
register struct sockaddr_in
*sin
;
hp
->afh_nethash
= inet_netof(sin
->sin_addr
);
hp
->afh_hosthash
= sin
->sin_addr
.s_addr
;
hp
->afh_hosthash
= ntohl(hp
->afh_hosthash
);
hp
->afh_hosthash
&= 0x7fffffff;
inet_netmatch(sin1
, sin2
)
struct sockaddr_in
*sin1
, *sin2
;
return (inet_netof(sin1
->sin_addr
) == inet_netof(sin2
->sin_addr
));
* Verify the message is from the right port.
register struct sockaddr_in
*sin
;
sin
->sin_port
= ntohs(sin
->sin_port
);
return (sin
->sin_port
== sp
->s_port
|| sin
->sin_port
== sp
->s_port
+1);
* Verify the message is from a "trusted" port.
register struct sockaddr_in
*sin
;
sin
->sin_port
= ntohs(sin
->sin_port
);
return (sin
->sin_port
<= IPPORT_RESERVED
);
* Internet output routine.
inet_output(s
, sin
, size
)
sin
->sin_port
= htons(sp
->s_port
);
if (send(s
, sin
, packet
, size
) < 0)
* Return 1 if the address is believed
* for an Internet host -- THIS IS A KLUDGE.
return (inet_lnaof(sin
->sin_addr
) != 0);
hp
->afh_nethash
= hp
->afh_hosthash
= 0;
struct sockaddr
*a1
, *a2
;