Index: src/configfile-glue.c =================================================================== --- src/configfile-glue.c (revision 2540) +++ src/configfile-glue.c (working copy) @@ -116,6 +116,36 @@ return -1; } break; + case T_CONFIG_INT: + switch(du->type) { + case TYPE_INTEGER: { + data_integer *di = (data_integer *)du; + + *((unsigned int *)(cv[i].destination)) = di->value; + break; + } + case TYPE_STRING: { + data_string *ds = (data_string *)du; + + if (ds->value->ptr && *ds->value->ptr) { + char *e; + long l = strtol(ds->value->ptr, &e, 10); + if (e != ds->value->ptr && !*e && l >=0 && l <= 4294967295) { + *((unsigned int *)(cv[i].destination)) = l; + break; + + } + } + + log_error_write(srv, __FILE__, __LINE__, "ssb", "got a string but expected an int:", cv[i].key, ds->value); + + return -1; + } + default: + log_error_write(srv, __FILE__, __LINE__, "ssds", "unexpected type for key:", cv[i].key, du->type, "expected a integer, range 0 ... 4294967295"); + return -1; + } + break; case T_CONFIG_BOOLEAN: if (du->type == TYPE_STRING) { data_string *ds = (data_string *)du; Index: src/base.h =================================================================== --- src/base.h (revision 2540) +++ src/base.h (working copy) @@ -84,6 +84,7 @@ typedef enum { T_CONFIG_UNSET, T_CONFIG_STRING, T_CONFIG_SHORT, + T_CONFIG_INT, T_CONFIG_BOOLEAN, T_CONFIG_ARRAY, T_CONFIG_LOCAL,