version 1.196, 2004/01/15 05:13:17 |
version 1.200, 2004/04/25 16:42:42 |
Line 219 int ip_checkinterface = 0; |
|
Line 219 int ip_checkinterface = 0; |
|
|
|
struct rttimer_queue *ip_mtudisc_timeout_q = NULL; |
struct rttimer_queue *ip_mtudisc_timeout_q = NULL; |
|
|
extern struct domain inetdomain; |
|
int ipqmaxlen = IFQ_MAXLEN; |
int ipqmaxlen = IFQ_MAXLEN; |
u_long in_ifaddrhash; /* size of hash table - 1 */ |
u_long in_ifaddrhash; /* size of hash table - 1 */ |
int in_ifaddrentries; /* total number of addrs */ |
int in_ifaddrentries; /* total number of addrs */ |
|
|
|
|
#define IPQ_UNLOCK() ipq_unlock() |
#define IPQ_UNLOCK() ipq_unlock() |
|
|
struct pool inmulti_pool; |
POOL_INIT(inmulti_pool, sizeof(struct in_multi), 0, 0, 0, "inmltpl", NULL); |
struct pool ipqent_pool; |
POOL_INIT(ipqent_pool, sizeof(struct ipqent), 0, 0, 0, "ipqepl", NULL); |
|
|
#ifdef INET_CSUM_COUNTERS |
#ifdef INET_CSUM_COUNTERS |
#include <sys/device.h> |
#include <sys/device.h> |
Line 393 ip_nmbclusters_changed(void) |
|
Line 392 ip_nmbclusters_changed(void) |
|
void |
void |
ip_init() |
ip_init() |
{ |
{ |
struct protosw *pr; |
const struct protosw *pr; |
int i; |
int i; |
|
|
pool_init(&inmulti_pool, sizeof(struct in_multi), 0, 0, 0, "inmltpl", |
|
NULL); |
|
pool_init(&ipqent_pool, sizeof(struct ipqent), 0, 0, 0, "ipqepl", |
|
NULL); |
|
|
|
pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW); |
pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW); |
if (pr == 0) |
if (pr == 0) |
panic("ip_init"); |
panic("ip_init"); |
Line 1288 static u_int fragttl_histo[(IPFRAGTTL+1) |
|
Line 1282 static u_int fragttl_histo[(IPFRAGTTL+1) |
|
static u_int |
static u_int |
ip_reass_ttl_decr(u_int ticks) |
ip_reass_ttl_decr(u_int ticks) |
{ |
{ |
u_int i, nfrags, median; |
u_int nfrags, median, dropfraction, keepfraction; |
struct ipq *fp, *nfp; |
struct ipq *fp, *nfp; |
u_int dropfraction, keepfraction; |
int i; |
|
|
nfrags = 0; |
nfrags = 0; |
memset(fragttl_histo, 0, sizeof fragttl_histo); |
memset(fragttl_histo, 0, sizeof fragttl_histo); |
Line 2170 SYSCTL_SETUP(sysctl_net_inet_ip_setup, " |
|
Line 2164 SYSCTL_SETUP(sysctl_net_inet_ip_setup, " |
|
{ |
{ |
extern int subnetsarelocal, hostzeroisbroadcast; |
extern int subnetsarelocal, hostzeroisbroadcast; |
|
|
sysctl_createv(SYSCTL_PERMANENT, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT, |
CTLTYPE_NODE, "net", NULL, |
CTLTYPE_NODE, "net", NULL, |
NULL, 0, NULL, 0, |
NULL, 0, NULL, 0, |
CTL_NET, CTL_EOL); |
CTL_NET, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT, |
CTLTYPE_NODE, "inet", NULL, |
CTLTYPE_NODE, "inet", NULL, |
NULL, 0, NULL, 0, |
NULL, 0, NULL, 0, |
CTL_NET, PF_INET, CTL_EOL); |
CTL_NET, PF_INET, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT, |
CTLTYPE_NODE, "ip", NULL, |
CTLTYPE_NODE, "ip", NULL, |
NULL, 0, NULL, 0, |
NULL, 0, NULL, 0, |
CTL_NET, PF_INET, IPPROTO_IP, CTL_EOL); |
CTL_NET, PF_INET, IPPROTO_IP, CTL_EOL); |
|
|
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "forwarding", NULL, |
CTLTYPE_INT, "forwarding", NULL, |
NULL, 0, &ipforwarding, 0, |
NULL, 0, &ipforwarding, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_FORWARDING, CTL_EOL); |
IPCTL_FORWARDING, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "redirect", NULL, |
CTLTYPE_INT, "redirect", NULL, |
NULL, 0, &ipsendredirects, 0, |
NULL, 0, &ipsendredirects, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_SENDREDIRECTS, CTL_EOL); |
IPCTL_SENDREDIRECTS, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "ttl", NULL, |
CTLTYPE_INT, "ttl", NULL, |
NULL, 0, &ip_defttl, 0, |
NULL, 0, &ip_defttl, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_DEFTTL, CTL_EOL); |
IPCTL_DEFTTL, CTL_EOL); |
#ifdef IPCTL_DEFMTU |
#ifdef IPCTL_DEFMTU |
sysctl_createv(SYSCTL_PERMANENT /* |SYSCTL_READWRITE? */, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT /* |CTLFLAG_READWRITE? */, |
CTLTYPE_INT, "mtu", NULL, |
CTLTYPE_INT, "mtu", NULL, |
NULL, 0, &ip_mtu, 0, |
NULL, 0, &ip_mtu, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_DEFMTU, CTL_EOL); |
IPCTL_DEFMTU, CTL_EOL); |
#endif /* IPCTL_DEFMTU */ |
#endif /* IPCTL_DEFMTU */ |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READONLY1, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READONLY1, |
CTLTYPE_INT, "forwsrcrt", NULL, |
CTLTYPE_INT, "forwsrcrt", NULL, |
NULL, 0, &ip_forwsrcrt, 0, |
NULL, 0, &ip_forwsrcrt, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_FORWSRCRT, CTL_EOL); |
IPCTL_FORWSRCRT, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "directed-broadcast", NULL, |
CTLTYPE_INT, "directed-broadcast", NULL, |
NULL, 0, &ip_directedbcast, 0, |
NULL, 0, &ip_directedbcast, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_DIRECTEDBCAST, CTL_EOL); |
IPCTL_DIRECTEDBCAST, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "allowsrcrt", NULL, |
CTLTYPE_INT, "allowsrcrt", NULL, |
NULL, 0, &ip_allowsrcrt, 0, |
NULL, 0, &ip_allowsrcrt, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_ALLOWSRCRT, CTL_EOL); |
IPCTL_ALLOWSRCRT, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "subnetsarelocal", NULL, |
CTLTYPE_INT, "subnetsarelocal", NULL, |
NULL, 0, &subnetsarelocal, 0, |
NULL, 0, &subnetsarelocal, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_SUBNETSARELOCAL, CTL_EOL); |
IPCTL_SUBNETSARELOCAL, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "mtudisc", NULL, |
CTLTYPE_INT, "mtudisc", NULL, |
NULL, 0, &ip_mtudisc, 0, |
NULL, 0, &ip_mtudisc, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_MTUDISC, CTL_EOL); |
IPCTL_MTUDISC, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "anonportmin", NULL, |
CTLTYPE_INT, "anonportmin", NULL, |
sysctl_net_inet_ip_ports, 0, &anonportmin, 0, |
sysctl_net_inet_ip_ports, 0, &anonportmin, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_ANONPORTMIN, CTL_EOL); |
IPCTL_ANONPORTMIN, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "anonportmax", NULL, |
CTLTYPE_INT, "anonportmax", NULL, |
sysctl_net_inet_ip_ports, 0, &anonportmax, 0, |
sysctl_net_inet_ip_ports, 0, &anonportmax, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_ANONPORTMAX, CTL_EOL); |
IPCTL_ANONPORTMAX, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "mtudisctimeout", NULL, |
CTLTYPE_INT, "mtudisctimeout", NULL, |
sysctl_net_inet_ip_pmtudto, 0, &ip_mtudisc_timeout, 0, |
sysctl_net_inet_ip_pmtudto, 0, &ip_mtudisc_timeout, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_MTUDISCTIMEOUT, CTL_EOL); |
IPCTL_MTUDISCTIMEOUT, CTL_EOL); |
#ifdef GATEWAY |
#ifdef GATEWAY |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "maxflows", NULL, |
CTLTYPE_INT, "maxflows", NULL, |
sysctl_net_inet_ip_maxflows, 0, &ip_maxflows, 0, |
sysctl_net_inet_ip_maxflows, 0, &ip_maxflows, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_MAXFLOWS, CTL_EOL); |
IPCTL_MAXFLOWS, CTL_EOL); |
#endif /* GATEWAY */ |
#endif /* GATEWAY */ |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "hostzerobroadcast", NULL, |
CTLTYPE_INT, "hostzerobroadcast", NULL, |
NULL, 0, &hostzeroisbroadcast, 0, |
NULL, 0, &hostzeroisbroadcast, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_HOSTZEROBROADCAST, CTL_EOL); |
IPCTL_HOSTZEROBROADCAST, CTL_EOL); |
#if NGIF > 0 |
#if NGIF > 0 |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "gifttl", NULL, |
CTLTYPE_INT, "gifttl", NULL, |
NULL, 0, &ip_gif_ttl, 0, |
NULL, 0, &ip_gif_ttl, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_GIF_TTL, CTL_EOL); |
IPCTL_GIF_TTL, CTL_EOL); |
#endif /* NGIF */ |
#endif /* NGIF */ |
#ifndef IPNOPRIVPORTS |
#ifndef IPNOPRIVPORTS |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "lowportmin", NULL, |
CTLTYPE_INT, "lowportmin", NULL, |
sysctl_net_inet_ip_ports, 0, &lowportmin, 0, |
sysctl_net_inet_ip_ports, 0, &lowportmin, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_LOWPORTMIN, CTL_EOL); |
IPCTL_LOWPORTMIN, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "lowportmax", NULL, |
CTLTYPE_INT, "lowportmax", NULL, |
sysctl_net_inet_ip_ports, 0, &lowportmax, 0, |
sysctl_net_inet_ip_ports, 0, &lowportmax, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_LOWPORTMAX, CTL_EOL); |
IPCTL_LOWPORTMAX, CTL_EOL); |
#endif /* IPNOPRIVPORTS */ |
#endif /* IPNOPRIVPORTS */ |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "maxfragpackets", NULL, |
CTLTYPE_INT, "maxfragpackets", NULL, |
NULL, 0, &ip_maxfragpackets, 0, |
NULL, 0, &ip_maxfragpackets, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_MAXFRAGPACKETS, CTL_EOL); |
IPCTL_MAXFRAGPACKETS, CTL_EOL); |
#if NGRE > 0 |
#if NGRE > 0 |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "grettl", NULL, |
CTLTYPE_INT, "grettl", NULL, |
NULL, 0, &ip_gre_ttl, 0, |
NULL, 0, &ip_gre_ttl, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_GRE_TTL, CTL_EOL); |
IPCTL_GRE_TTL, CTL_EOL); |
#endif /* NGRE */ |
#endif /* NGRE */ |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "checkinterface", NULL, |
CTLTYPE_INT, "checkinterface", NULL, |
NULL, 0, &ip_checkinterface, 0, |
NULL, 0, &ip_checkinterface, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |
IPCTL_CHECKINTERFACE, CTL_EOL); |
IPCTL_CHECKINTERFACE, CTL_EOL); |
sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE, |
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT|CTLFLAG_READWRITE, |
CTLTYPE_INT, "random_id", NULL, |
CTLTYPE_INT, "random_id", NULL, |
NULL, 0, &ip_do_randomid, 0, |
NULL, 0, &ip_do_randomid, 0, |
CTL_NET, PF_INET, IPPROTO_IP, |
CTL_NET, PF_INET, IPPROTO_IP, |