* otherwise, we use the default MSS which assumes a
* safe minimum MTU of 1280 bytes for V6.
*/
- if(r != nil && (version == V4 || (r->type & (Rifc|Runi)) != 0)){
+ if(r != nil){
ifc = r->ifc;
mtu = ifc->maxtu - ifc->m->hsize;
- if(version == V6)
- return mtu - (TCP6_PKT + TCP6_HDRSIZE);
- else
+ if(version == V4)
return mtu - (TCP4_PKT + TCP4_HDRSIZE);
+ mtu -= TCP6_PKT + TCP6_HDRSIZE;
+ if((r->type & (Rifc|Runi)) != 0 || mtu <= DEF_MSS6)
+ return mtu;
}
if(version == V6)
return DEF_MSS6;
static char*
tcpctl(Conv* c, char** f, int n)
{
+ if(n == 1 && strcmp(f[0], "close") == 0)
+ return tcpclose(c), nil;
if(n == 1 && strcmp(f[0], "hangup") == 0)
return tcphangup(c);
if(n >= 1 && strcmp(f[0], "keepalive") == 0)