summaryrefslogtreecommitdiff
path: root/lib/keychain.c
diff options
context:
space:
mode:
authorpaul <paul>2005-05-06 21:25:49 +0000
committerpaul <paul>2005-05-06 21:25:49 +0000
commit8cc4198f9fabe5f10f5a773de1503d82f33a01fb (patch)
tree77045da709ff66629bd12029b9ee17700360909b /lib/keychain.c
parente7fe8c88c3d552400e1ae3ae9243319ab95d6f2d (diff)
2005-05-06 Paul Jakma <paul@dishone.st>
* (general) extern and static'ification of functions in code and header. Cleanup any definitions with unspecified arguments. Add casts for callback assignments where the callback is defined, typically, as passing void *, but the function being assigned has some other pointer type defined as its argument, as gcc complains about casts from void * to X* via function arguments. Fix some old K&R style function argument definitions. Add noreturn gcc attribute to some functions, as appropriate. Add unused gcc attribute to some functions (eg ones meant to help while debugging) Add guard defines to headers which were missing them. * command.c: (install_node) add const qualifier, still doesnt shut up the warning though, because of the double pointer. (cmp_node) ditto * keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived fromn vty.h ones to fix some of the (long) < 0 warnings. * thread.c: (various) use thread_empty (cpu_record_hash_key) should cast to uintptr_t, a stdint.h type * vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they removed from ospfd/ospf_vty.h * zebra.h: Move definition of ZEBRA_PORT to here, to remove dependence of lib on zebra/zserv.h
Diffstat (limited to 'lib/keychain.c')
-rw-r--r--lib/keychain.c77
1 files changed, 41 insertions, 36 deletions
diff --git a/lib/keychain.c b/lib/keychain.c
index 2b5b0684..10928b11 100644
--- a/lib/keychain.c
+++ b/lib/keychain.c
@@ -28,8 +28,8 @@ Boston, MA 02111-1307, USA. */
/* Master list of key chain. */
struct list *keychain_list;
-struct keychain *
-keychain_new ()
+static struct keychain *
+keychain_new (void)
{
struct keychain *new;
new = XMALLOC (MTYPE_KEYCHAIN, sizeof (struct keychain));
@@ -37,14 +37,14 @@ keychain_new ()
return new;
}
-void
+static void
keychain_free (struct keychain *keychain)
{
XFREE (MTYPE_KEYCHAIN, keychain);
}
-struct key *
-key_new ()
+static struct key *
+key_new (void)
{
struct key *new;
new = XMALLOC (MTYPE_KEY, sizeof (struct key));
@@ -52,7 +52,7 @@ key_new ()
return new;
}
-void
+static void
key_free (struct key *key)
{
XFREE (MTYPE_KEY, key);
@@ -75,9 +75,12 @@ keychain_lookup (const char *name)
return NULL;
}
-int
-key_cmp_func (const struct key *k1, const struct key *k2)
+static int
+key_cmp_func (void *arg1, void *arg2)
{
+ const struct key *k1 = arg1;
+ const struct key *k2 = arg2;
+
if (k1->index > k2->index)
return 1;
if (k1->index < k2->index)
@@ -85,7 +88,7 @@ key_cmp_func (const struct key *k1, const struct key *k2)
return 0;
}
-void
+static void
key_delete_func (struct key *key)
{
if (key->string)
@@ -93,7 +96,7 @@ key_delete_func (struct key *key)
key_free (key);
}
-struct keychain *
+static struct keychain *
keychain_get (const char *name)
{
struct keychain *keychain;
@@ -113,7 +116,7 @@ keychain_get (const char *name)
return keychain;
}
-void
+static void
keychain_delete (struct keychain *keychain)
{
if (keychain->name)
@@ -124,7 +127,7 @@ keychain_delete (struct keychain *keychain)
keychain_free (keychain);
}
-struct key *
+static struct key *
key_lookup (const struct keychain *keychain, u_int32_t index)
{
struct listnode *node;
@@ -203,7 +206,7 @@ key_lookup_for_send (const struct keychain *keychain)
return NULL;
}
-struct key *
+static struct key *
key_get (const struct keychain *keychain, u_int32_t index)
{
struct key *key;
@@ -220,7 +223,7 @@ key_get (const struct keychain *keychain, u_int32_t index)
return key;
}
-void
+static void
key_delete (struct keychain *keychain, struct key *key)
{
listnode_delete (keychain->key, key);
@@ -356,7 +359,7 @@ DEFUN (no_key_string,
/* Convert HH:MM:SS MON DAY YEAR to time_t value. -1 is returned when
given string is malformed. */
-time_t
+static time_t
key_str2time (const char *time_str, const char *day_str, const char *month_str,
const char *year_str)
{
@@ -366,7 +369,6 @@ key_str2time (const char *time_str, const char *day_str, const char *month_str,
time_t time;
unsigned int sec, min, hour;
unsigned int day, month, year;
- char *endptr = NULL;
const char *month_name[] =
{
@@ -385,6 +387,18 @@ key_str2time (const char *time_str, const char *day_str, const char *month_str,
NULL
};
+#define GET_LONG_RANGE(V,STR,MIN,MAX) \
+{ \
+ unsigned long tmpl; \
+ char *endptr = NULL; \
+ tmpl = strtoul ((STR), &endptr, 10); \
+ if (*endptr != '\0' || tmpl == ULONG_MAX) \
+ return -1; \
+ if ( tmpl < (MIN) || tmpl > (MAX)) \
+ return -1; \
+ (V) = tmpl; \
+}
+
/* Check hour field of time_str. */
colon = strchr (time_str, ':');
if (colon == NULL)
@@ -392,9 +406,7 @@ key_str2time (const char *time_str, const char *day_str, const char *month_str,
*colon = '\0';
/* Hour must be between 0 and 23. */
- hour = strtoul (time_str, &endptr, 10);
- if (hour == ULONG_MAX || *endptr != '\0' || hour < 0 || hour > 23)
- return -1;
+ GET_LONG_RANGE (hour, time_str, 0, 23);
/* Check min field of time_str. */
time_str = colon + 1;
@@ -404,9 +416,7 @@ key_str2time (const char *time_str, const char *day_str, const char *month_str,
*colon = '\0';
/* Min must be between 0 and 59. */
- min = strtoul (time_str, &endptr, 10);
- if (min == ULONG_MAX || *endptr != '\0' || min < 0 || min > 59)
- return -1;
+ GET_LONG_RANGE (min, time_str, 0, 59);
/* Check sec field of time_str. */
time_str = colon + 1;
@@ -414,14 +424,10 @@ key_str2time (const char *time_str, const char *day_str, const char *month_str,
return -1;
/* Sec must be between 0 and 59. */
- sec = strtoul (time_str, &endptr, 10);
- if (sec == ULONG_MAX || *endptr != '\0' || sec < 0 || sec > 59)
- return -1;
+ GET_LONG_RANGE (sec, time_str, 0, 59);
/* Check day_str. Day must be <1-31>. */
- day = strtoul (day_str, &endptr, 10);
- if (day == ULONG_MAX || *endptr != '\0' || day < 0 || day > 31)
- return -1;
+ GET_LONG_RANGE (day, day_str, 1, 31);
/* Check month_str. Month must match month_name. */
month = 0;
@@ -436,9 +442,7 @@ key_str2time (const char *time_str, const char *day_str, const char *month_str,
return -1;
/* Check year_str. Year must be <1993-2035>. */
- year = strtoul (year_str, &endptr, 10);
- if (year == ULONG_MAX || *endptr != '\0' || year < 1993 || year > 2035)
- return -1;
+ GET_LONG_RANGE (year, year_str, 1993, 2035);
memset (&tm, 0, sizeof (struct tm));
tm.tm_sec = sec;
@@ -451,9 +455,10 @@ key_str2time (const char *time_str, const char *day_str, const char *month_str,
time = mktime (&tm);
return time;
+#undef GET_LONG_RANGE
}
-int
+static int
key_lifetime_set (struct vty *vty, struct key_range *krange,
const char *stime_str, const char *sday_str,
const char *smonth_str, const char *syear_str,
@@ -489,7 +494,7 @@ key_lifetime_set (struct vty *vty, struct key_range *krange,
return CMD_SUCCESS;
}
-int
+static int
key_lifetime_duration_set (struct vty *vty, struct key_range *krange,
const char *stime_str, const char *sday_str,
const char *smonth_str, const char *syear_str,
@@ -513,7 +518,7 @@ key_lifetime_duration_set (struct vty *vty, struct key_range *krange,
return CMD_SUCCESS;
}
-int
+static int
key_lifetime_infinite_set (struct vty *vty, struct key_range *krange,
const char *stime_str, const char *sday_str,
const char *smonth_str, const char *syear_str)
@@ -863,7 +868,7 @@ struct cmd_node keychain_key_node =
1
};
-int
+static int
keychain_strftime (char *buf, int bufsiz, time_t *time)
{
struct tm *tm;
@@ -876,7 +881,7 @@ keychain_strftime (char *buf, int bufsiz, time_t *time)
return len;
}
-int
+static int
keychain_config_write (struct vty *vty)
{
struct keychain *keychain;