static void tcp6_init(void) { icmp6_mtudisc_callback_register(tcp6_mtudisc_callback); tcp_init_common(sizeof(struct ip6_hdr)); }
/* * Tcp initialization */ void tcp_init() { tcp_iss = 1; /* wrong */ pool_init(&tcpcb_pool, sizeof(struct tcpcb), 0, 0, 0, "tcpcbpl", NULL); pool_init(&tcpqe_pool, sizeof(struct tcpqent), 0, 0, 0, "tcpqepl", NULL); pool_sethardlimit(&tcpqe_pool, tcp_reass_limit, NULL, 0); #ifdef TCP_SACK pool_init(&sackhl_pool, sizeof(struct sackhole), 0, 0, 0, "sackhlpl", NULL); pool_sethardlimit(&sackhl_pool, tcp_sackhole_limit, NULL, 0); #endif /* TCP_SACK */ in_pcbinit(&tcbtable, tcbhashsize); #ifdef INET6 /* * Since sizeof(struct ip6_hdr) > sizeof(struct ip), we * do max length checks/computations only on the former. */ if (max_protohdr < (sizeof(struct ip6_hdr) + sizeof(struct tcphdr))) max_protohdr = (sizeof(struct ip6_hdr) + sizeof(struct tcphdr)); if ((max_linkhdr + sizeof(struct ip6_hdr) + sizeof(struct tcphdr)) > MHLEN) panic("tcp_init"); icmp6_mtudisc_callback_register(tcp6_mtudisc_callback); #endif /* INET6 */ /* Initialize the compressed state engine. */ syn_cache_init(); /* Initialize timer state. */ tcp_timer_init(); }