- IFTRACE(D_CONN)
- tptrace(TPPTmisc, "ENTER GET MTU: size negot \n",*size, *negot, 0, 0);
- ENDTRACE
-
- *size = 1 << *negot;
-
- if( *size > windowsize ) {
- *size = windowsize;
- }
-
- ia = in_iaonnetof(in_netof(inp->inp_faddr));
- if ( ia == (struct in_ifaddr *)0 ) {
- ifp = tpip_route(&inp->inp_faddr);
- if( ifp == (struct ifnet *)0 )
- return ;
- } else
- ifp = ia->ia_ifp;
-
-
- /****************************************************************
- * TODO - make this indirect off the socket structure to the
- * network layer to get headersize
- * After all, who knows what lies below the IP layer?
- * Who knows how big the NL header will be?
- ***************************************************************/
-
- if( *size > ifp->if_mtu - sizeof(struct ip)) {
- *size = ifp->if_mtu - sizeof(struct ip);
- }
- for(i=TP_MIN_TPDUSIZE; (i<TP_MAX_TPDUSIZE && ((1<<i)<*size)) ; i++)
- ;
- i--;
-
- if (in_netof(inp->inp_laddr) != in_netof(inp->inp_faddr)) {
- i++;
- } else {
- *size = 1<<i;
- }
- *negot = i;
-
- IFDEBUG(D_CONN)
- printf("GET MTU RETURNS: ifp %s size 0x%x negot 0x%x\n",
- ifp->if_name, *size, *negot);
- ENDDEBUG
- IFTRACE(D_CONN)
- tptrace(TPPTmisc, "EXIT GET MTU: tpcb size negot \n",
- *size, *negot, 0, 0);
- ENDTRACE