version 1.1.1.1, 2012/02/21 17:26:12
|
version 1.1.1.3, 2013/07/21 23:54:39
|
Line 23 Software Foundation, Inc., 59 Temple Place - Suite 330
|
Line 23 Software Foundation, Inc., 59 Temple Place - Suite 330
|
|
|
#include "thread.h" |
#include "thread.h" |
#include "log.h" |
#include "log.h" |
|
#include "sockunion.h" |
|
|
#define VTY_BUFSIZ 512 |
#define VTY_BUFSIZ 512 |
#define VTY_MAXHIST 20 |
#define VTY_MAXHIST 20 |
Line 39 struct vty
|
Line 40 struct vty
|
/* Node status of this vty */ |
/* Node status of this vty */ |
int node; |
int node; |
|
|
/* What address is this vty comming from. */ |
|
char *address; |
|
|
|
/* Failure count */ |
/* Failure count */ |
int fail; |
int fail; |
|
|
Line 118 struct vty
|
Line 116 struct vty
|
/* Timeout seconds and thread. */ |
/* Timeout seconds and thread. */ |
unsigned long v_timeout; |
unsigned long v_timeout; |
struct thread *t_timeout; |
struct thread *t_timeout; |
|
|
|
/* What address is this vty comming from. */ |
|
char address[SU_ADDRSTRLEN]; |
}; |
}; |
|
|
/* Integrated configuration file. */ |
/* Integrated configuration file. */ |
Line 148 struct vty
|
Line 149 struct vty
|
#define PRINTF_ATTRIBUTE(a,b) |
#define PRINTF_ATTRIBUTE(a,b) |
#endif /* __GNUC__ */ |
#endif /* __GNUC__ */ |
|
|
/* Utility macros to convert VTY argument to unsigned long or integer. */ | /* Utility macros to convert VTY argument to unsigned long */ |
#define VTY_GET_LONG(NAME,V,STR) \ | #define VTY_GET_ULONG(NAME,V,STR) \ |
do { \ |
do { \ |
char *endptr = NULL; \ |
char *endptr = NULL; \ |
|
errno = 0; \ |
(V) = strtoul ((STR), &endptr, 10); \ |
(V) = strtoul ((STR), &endptr, 10); \ |
if (*endptr != '\0' || (V) == ULONG_MAX) \ | if (*(STR) == '-' || *endptr != '\0' || errno) \ |
{ \ |
{ \ |
vty_out (vty, "%% Invalid %s value%s", NAME, VTY_NEWLINE); \ |
vty_out (vty, "%% Invalid %s value%s", NAME, VTY_NEWLINE); \ |
return CMD_WARNING; \ |
return CMD_WARNING; \ |
} \ |
} \ |
} while (0) |
} while (0) |
|
|
#define VTY_GET_INTEGER_RANGE(NAME,V,STR,MIN,MAX) \ | /* |
do { \ | * The logic below ((TMPL) <= ((MIN) && (TMPL) != (MIN)) is |
unsigned long tmpl; \ | * done to circumvent the compiler complaining about |
VTY_GET_LONG(NAME, tmpl, STR); \ | * comparing unsigned numbers against zero, if MIN is zero. |
if ( (tmpl < (MIN)) || (tmpl > (MAX))) \ | * NB: The compiler isn't smart enough to supress the warning |
{ \ | * if you write (MIN) != 0 && tmpl < (MIN). |
vty_out (vty, "%% Invalid %s value%s", NAME, VTY_NEWLINE); \ | */ |
return CMD_WARNING; \ | #define VTY_GET_INTEGER_RANGE_HEART(NAME,TMPL,STR,MIN,MAX) \ |
} \ | do { \ |
(V) = tmpl; \ | VTY_GET_ULONG(NAME, (TMPL), STR); \ |
| if ( ((TMPL) <= (MIN) && (TMPL) != (MIN)) || (TMPL) > (MAX) ) \ |
| { \ |
| vty_out (vty, "%% Invalid %s value%s", NAME, VTY_NEWLINE);\ |
| return CMD_WARNING; \ |
| } \ |
} while (0) |
} while (0) |
|
|
#define VTY_GET_INTEGER(NAME,V,STR) \ | #define VTY_GET_INTEGER_RANGE(NAME,V,STR,MIN,MAX) \ |
VTY_GET_INTEGER_RANGE(NAME,V,STR,0U,UINT32_MAX) | do { \ |
| unsigned long tmpl; \ |
| VTY_GET_INTEGER_RANGE_HEART(NAME,tmpl,STR,MIN,MAX); \ |
| (V) = tmpl; \ |
| } while (0) |
| |
| #define VTY_CHECK_INTEGER_RANGE(NAME,STR,MIN,MAX) \ |
| do { \ |
| unsigned long tmpl; \ |
| VTY_GET_INTEGER_RANGE_HEART(NAME,tmpl,STR,MIN,MAX); \ |
| } while (0) |
| |
| #define VTY_GET_INTEGER(NAME,V,STR) \ |
| VTY_GET_INTEGER_RANGE(NAME,V,STR,0U,UINT32_MAX) |
|
|
#define VTY_GET_IPV4_ADDRESS(NAME,V,STR) \ |
#define VTY_GET_IPV4_ADDRESS(NAME,V,STR) \ |
do { \ |
do { \ |