// FIXIT-L allow multiple , separated ranges
static bool valid_int(Value& v, const char* r)
{
+ if ( v.get_type() != Value::VT_NUM )
+ return false;
+
if ( !r )
return true;
// FIXIT-L allow multiple , separated ranges
static bool valid_real(Value& v, const char* r)
{
+ if ( v.get_type() != Value::VT_NUM )
+ return false;
+
if ( !r )
return true;
static bool valid_string(Value& v, const char* r)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
if ( r && !strcmp(r, "(optional)") )
return true;
static bool valid_select(Value& v, const char* r)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
if ( !r )
return false;
static bool valid_enum(Value& v, const char* r)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
if ( !r )
return false;
static bool valid_multi(Value& v, const char* r)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
if ( !r )
return false;
static bool valid_mac(Value& v, const char*)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
struct addr a;
if ( addr_pton(v.get_string(), &a) )
static bool valid_ip4(Value& v, const char*)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
uint32_t ip4 = inet_addr(v.get_string());
if ( ip4 == INADDR_NONE )
static bool valid_addr(Value& v, const char*)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
struct addr a;
if ( addr_pton(v.get_string(), &a) )
static bool valid_bit_list(Value& v, const char* r)
{
+ if ( v.get_type() != Value::VT_STR )
+ return false;
+
string pl = v.get_string();
string bs;
}
if ( v.get_type() == Value::VT_STR )
- ErrorMessage("ERROR invalid %s = %s\n", fqn, v.get_string());
+ ErrorMessage("ERROR invalid %s = '%s'\n", fqn, v.get_string());
else if ( v.get_real() == v.get_long() )
ErrorMessage("ERROR invalid %s = %ld\n", fqn, v.get_long());
else