projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BSD 4_3 release
[unix-history]
/
usr
/
src
/
etc
/
routed
/
af.c
diff --git
a/usr/src/etc/routed/af.c
b/usr/src/etc/routed/af.c
index
eef0f3d
..
d307fcd
100644
(file)
--- a/
usr/src/etc/routed/af.c
+++ b/
usr/src/etc/routed/af.c
@@
-1,36
+1,52
@@
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved. The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
+
#ifndef lint
#ifndef lint
-static char sccsid[] = "@(#)af.c
4.11 (Berkeley) 5/25/83
";
-#endif
+static char sccsid[] = "@(#)af.c
5.4 (Berkeley) 4/20/86
";
+#endif
not lint
#include "defs.h"
/*
* Address family support routines
*/
#include "defs.h"
/*
* 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(),
int inet_hash(), inet_netmatch(), inet_output(),
inet_portmatch(), inet_portcheck(),
- inet_checkhost(), inet_canon();
-#define NIL \
- { null_hash, null_netmatch, null_output, \
- null_portmatch, null_portcheck, null_checkhost, \
- null_canon }
+ inet_checkhost(), inet_rtflags(), inet_sendsubnet(), inet_canon();
+char *inet_format();
+
+#define NIL { 0 }
#define INET \
{ inet_hash, inet_netmatch, inet_output, \
inet_portmatch, inet_portcheck, inet_checkhost, \
#define INET \
{ inet_hash, inet_netmatch, inet_output, \
inet_portmatch, inet_portcheck, inet_checkhost, \
- inet_canon }
+ inet_rtflags, inet_sendsubnet, inet_canon, \
+ inet_format \
+ }
+
+struct afswitch afswitch[AF_MAX] = {
+ NIL, /* 0- unused */
+ NIL, /* 1- Unix domain, unused */
+ INET, /* Internet */
+};
-struct afswitch afswitch[AF_MAX] =
- { NIL, NIL, INET, INET, NIL, NIL, NIL, NIL, NIL, NIL, NIL };
+int af_max = sizeof(afswitch) / sizeof(afswitch[0]);
+
+struct sockaddr_in inet_default = { AF_INET, INADDR_ANY };
inet_hash(sin, hp)
register struct sockaddr_in *sin;
struct afhash *hp;
{
inet_hash(sin, hp)
register struct sockaddr_in *sin;
struct afhash *hp;
{
+ register u_long n;
- hp->afh_nethash = inet_netof(sin->sin_addr);
+ n = inet_netof(sin->sin_addr);
+ if (n)
+ while ((n & 0xff) == 0)
+ n >>= 8;
+ hp->afh_nethash = n;
hp->afh_hosthash = ntohl(sin->sin_addr.s_addr);
hp->afh_hosthash &= 0x7fffffff;
}
hp->afh_hosthash = ntohl(sin->sin_addr.s_addr);
hp->afh_hosthash &= 0x7fffffff;
}
@@
-49,10
+65,6
@@
inet_portmatch(sin)
register struct sockaddr_in *sin;
{
register struct sockaddr_in *sin;
{
-#ifdef COMPAT
- if (ntohs(sin->sin_port) == ntohs(sp->s_port) + 1)
- return (1);
-#endif
return (sin->sin_port == sp->s_port);
}
return (sin->sin_port == sp->s_port);
}
@@
-91,8
+103,18
@@
inet_output(s, flags, sin, size)
inet_checkhost(sin)
struct sockaddr_in *sin;
{
inet_checkhost(sin)
struct sockaddr_in *sin;
{
-
- return (inet_lnaof(sin->sin_addr) != 0);
+ u_long i = ntohl(sin->sin_addr.s_addr);
+
+#define IN_BADCLASS(i) (((long) (i) & 0xe0000000) == 0xe0000000)
+
+ if (IN_BADCLASS(i) || sin->sin_port != 0)
+ return (0);
+ if (i != 0 && (i & 0xff000000) == 0)
+ return (0);
+ for (i = 0; i < sizeof(sin->sin_zero)/sizeof(sin->sin_zero[0]); i++)
+ if (sin->sin_zero[i])
+ return (0);
+ return (1);
}
inet_canon(sin)
}
inet_canon(sin)
@@
-102,61
+124,11
@@
inet_canon(sin)
sin->sin_port = 0;
}
sin->sin_port = 0;
}
-/*ARGSUSED*/
-null_hash(addr, hp)
- struct sockaddr *addr;
- struct afhash *hp;
-{
-
- hp->afh_nethash = hp->afh_hosthash = 0;
-}
-
-/*ARGSUSED*/
-null_netmatch(a1, a2)
- struct sockaddr *a1, *a2;
-{
-
- return (0);
-}
-
-/*ARGSUSED*/
-null_output(s, f, a1, n)
- int s, f;
- struct sockaddr *a1;
- int n;
-{
-
- ;
-}
-
-/*ARGSUSED*/
-null_portmatch(a1)
- struct sockaddr *a1;
-{
-
- return (0);
-}
-
-/*ARGSUSED*/
-null_portcheck(a1)
- struct sockaddr *a1;
-{
-
- return (0);
-}
-
-/*ARGSUSED*/
-null_checkhost(a1)
- struct sockaddr *a1;
-{
-
- return (0);
-}
-
-/*ARGSUSED*/
-null_canon(a1)
- struct sockaddr *a1;
+char *
+inet_format(sin)
+ struct sockaddr_in *sin;
{
{
+ char *inet_ntoa();
- ;
+
return (inet_ntoa(sin->sin_addr))
;
}
}