if(n->mtuprobes > 32) {
if(!n->minmtu) {
n->mtuprobes = 31;
- timeout = mesh->pinginterval;
+ timeout = mesh->dev_class_traits[n->devclass].pinginterval;
goto end;
}
n->mtuprobes = 1;
n->minmtu = 0;
n->maxmtu = MTU;
+
+ update_node_pmtu(mesh, n);
}
if(n->mtuprobes >= 10 && n->mtuprobes < 32 && !n->minmtu) {
if(n->mtuprobes == 30 || (n->mtuprobes < 30 && n->minmtu >= n->maxmtu)) {
if(n->minmtu > n->maxmtu) {
n->minmtu = n->maxmtu;
+ update_node_pmtu(mesh, n);
} else {
n->maxmtu = n->minmtu;
}
}
if(n->mtuprobes == 31) {
- timeout = mesh->pinginterval;
+ timeout = mesh->dev_class_traits[n->devclass].pinginterval;
goto end;
} else if(n->mtuprobes == 32) {
- timeout = mesh->pingtimeout;
+ timeout = mesh->dev_class_traits[n->devclass].pingtimeout;
}
for(int i = 0; i < 5; i++) {
if(n->minmtu < len) {
n->minmtu = len;
+ update_node_pmtu(mesh, n);
}
}
}