static char sccsid
[] = "@(#)af.c 4.1 %G%";
* Address family support routines
int null_hash(), null_netmatch(), null_output(),
null_portmatch(), null_checkhost(), null_canon();
int inet_hash(), inet_netmatch(), inet_output(),
inet_portmatch(), inet_checkhost(), inet_canon();
{ null_hash, null_netmatch, null_output, \
null_portmatch, null_checkhost, null_canon }
{ inet_hash, inet_netmatch, inet_output, \
inet_portmatch, inet_checkhost, inet_canon }
struct afswitch afswitch
[AF_MAX
] =
{ NIL
, NIL
, INET
, INET
, NIL
, NIL
, NIL
, NIL
, NIL
, NIL
, NIL
};
register struct sockaddr_in
*sin
;
hp
->afh_nethash
= sin
->sin_addr
.s_net
;
hp
->afh_hosthash
= ntohl(sin
->sin_addr
.s_addr
);
inet_netmatch(sin1
, sin2
)
struct sockaddr_in
*sin1
, *sin2
;
return (sin1
->sin_addr
.s_net
== sin2
->sin_addr
.s_net
);
* Verify the message is from the right port.
int port
= ntohs(sin
->sin_port
);
return (port
== IPPORT_ROUTESERVER
);
* Internet output routine.
extern char packet
[MAXPACKETSIZE
];
sin
->sin_port
= htons(IPPORT_ROUTESERVER
);
if (send(s
, sin
, packet
, size
) < 0)
* Return 1 if the address is for an Internet host,
* otherwise assume it's a network address (broadcast).
extern struct in_addr
if_makeaddr();
netaddr
= if_makeaddr((int)sin
->sin_addr
.s_net
, INADDR_ANY
);
return (netaddr
.s_addr
!= sin
->sin_addr
.s_addr
);
hp
->afh_nethash
= hp
->afh_hosthash
= 0;
struct sockaddr
*a1
, *a2
;