From: pcarana Date: Tue, 7 May 2019 16:22:31 +0000 (-0500) Subject: Relocate and rename some functions X-Git-Tag: v0.0.2~35^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd4b3d9d9c9244669f31feaa2ef3e9581628ac3d;p=thirdparty%2FFORT-validator.git Relocate and rename some functions --- diff --git a/src/address.c b/src/address.c index 67663021..8a4ba6a4 100644 --- a/src/address.c +++ b/src/address.c @@ -394,7 +394,7 @@ str2addr6(const char *addr, struct in6_addr *dst) } int -str_to_prefix4(const char *str, struct ipv4_prefix *result) +prefix4_parse(const char *str, struct ipv4_prefix *result) { int error; @@ -409,7 +409,7 @@ str_to_prefix4(const char *str, struct ipv4_prefix *result) } int -str_to_prefix6(const char *str, struct ipv6_prefix *result) +prefix6_parse(const char *str, struct ipv6_prefix *result) { int error; @@ -424,7 +424,7 @@ str_to_prefix6(const char *str, struct ipv6_prefix *result) } int -str_to_prefix_length(const char *text, uint8_t *dst, uint8_t max_value) +prefix_length_parse(const char *text, uint8_t *dst, uint8_t max_value) { unsigned long len; diff --git a/src/address.h b/src/address.h index f7869937..d3453752 100644 --- a/src/address.h +++ b/src/address.h @@ -38,9 +38,9 @@ int prefix6_decode(IPAddress_t const *, struct ipv6_prefix *); int range4_decode(IPAddressRange_t const *, struct ipv4_range *); int range6_decode(IPAddressRange_t const *, struct ipv6_range *); -int str_to_prefix4(const char *, struct ipv4_prefix *); -int str_to_prefix6(const char *, struct ipv6_prefix *); -int str_to_prefix_length(const char *, uint8_t *, uint8_t); +int prefix4_parse(const char *, struct ipv4_prefix *); +int prefix6_parse(const char *, struct ipv6_prefix *); +int prefix_length_parse(const char *, uint8_t *, uint8_t); int ipv4_prefix_validate(struct ipv4_prefix *); int ipv6_prefix_validate(struct ipv6_prefix *); diff --git a/src/json_parser.c b/src/json_parser.c index e868716b..3b567412 100644 --- a/src/json_parser.c +++ b/src/json_parser.c @@ -86,3 +86,15 @@ json_get_object(json_t *parent, char const *name) return child; } + +/* + * Any unknown members should be treated as errors, RFC8416 3.1: + * "JSON members that are not defined here MUST NOT be used in SLURM + * files. An RP MUST consider any deviations from the specifications to + * be errors." + */ +bool +json_valid_members_count(json_t *object, size_t expected_size) +{ + return json_object_size(object) == expected_size; +} diff --git a/src/json_parser.h b/src/json_parser.h index 4567452a..b3afe556 100644 --- a/src/json_parser.h +++ b/src/json_parser.h @@ -2,10 +2,13 @@ #define SRC_JSON_PARSER_H_ #include +#include int json_get_string(json_t *, char const *, char const **); int json_get_int(json_t *, char const *, json_int_t *); json_t *json_get_array(json_t *, char const *); json_t *json_get_object(json_t *, char const *); +bool json_valid_members_count(json_t *, size_t); + #endif /* SRC_JSON_PARSER_H_ */ diff --git a/src/slurm/slurm_parser.c b/src/slurm/slurm_parser.c index b1bf139f..ce6c1d86 100644 --- a/src/slurm/slurm_parser.c +++ b/src/slurm/slurm_parser.c @@ -1,7 +1,6 @@ #include "slurm_parser.h" #include -#include #include #include #include @@ -56,42 +55,6 @@ slurm_parse(char const *location) return error; } -static int -parse_prefix4(char *text, struct ipv4_prefix *prefixv4) -{ - if (text == NULL) - return -EINVAL; - return str_to_prefix4(text, prefixv4); -} - -static int -parse_prefix6(char *text, struct ipv6_prefix *prefixv6) -{ - if (text == NULL) - return -EINVAL; - return str_to_prefix6(text, prefixv6); -} - -static int -parse_prefix_length(char *text, uint8_t *value, uint8_t max_value) -{ - if (text == NULL) - return -EINVAL; - return str_to_prefix_length(text, value, max_value); -} - -/* - * Any unknown members should be treated as errors, RFC8416 3.1: - * "JSON members that are not defined here MUST NOT be used in SLURM - * files. An RP MUST consider any deviations from the specifications to - * be errors." - */ -static bool -valid_members_count(json_t *object, size_t expected_size) -{ - return json_object_size(object) == expected_size; -} - static int set_asn(json_t *object, bool is_assertion, uint32_t *result, uint8_t *flag, size_t *members_loaded) @@ -166,9 +129,9 @@ set_prefix(json_t *object, bool is_assertion, struct slurm_prefix *result, token = strtok(clone, "/"); isv4 = strchr(token, ':') == NULL; if (isv4) - error = parse_prefix4(token, &prefixv4); + error = prefix4_parse(token, &prefixv4); else - error = parse_prefix6(token, &prefixv6); + error = prefix6_parse(token, &prefixv6); if (error) { free(clone); @@ -177,7 +140,7 @@ set_prefix(json_t *object, bool is_assertion, struct slurm_prefix *result, /* Second part: Prefix length in numeric format */ token = strtok(NULL, "/"); - error = parse_prefix_length(token, + error = prefix_length_parse(token, (isv4 ? &prefixv4.len : &prefixv6.len), (isv4 ? 32 : 128)); free(clone); @@ -413,7 +376,7 @@ load_single_prefix(json_t *object, bool is_assertion) } /* Validate expected members */ - if (!valid_members_count(object, member_count)) { + if (!json_valid_members_count(object, member_count)) { pr_err("Prefix filter has unknown members (see RFC 8416 section 3.3.1)"); error = -EINVAL; goto release_comment; @@ -440,7 +403,7 @@ load_single_prefix(json_t *object, bool is_assertion) } /* Validate expected members */ - if (!valid_members_count(object, member_count)) { + if (!json_valid_members_count(object, member_count)) { pr_err("Prefix assertion has unknown members (see RFC 8416 section 3.4.1)"); error = -EINVAL; goto release_comment; @@ -546,7 +509,7 @@ load_single_bgpsec(json_t *object, bool is_assertion) } /* Validate expected members */ - if (!valid_members_count(object, member_count)) { + if (!json_valid_members_count(object, member_count)) { pr_err("BGPsec filter has unknown members (see RFC 8416 section 3.3.2)"); error = -EINVAL; goto release_comment; @@ -560,7 +523,7 @@ load_single_bgpsec(json_t *object, bool is_assertion) } /* Validate expected members */ - if (!valid_members_count(object, member_count)) { + if (!json_valid_members_count(object, member_count)) { pr_err("BGPsec assertion has unknown members (see RFC 8416 section 3.4.2)"); error = -EINVAL; goto release_comment; @@ -644,7 +607,7 @@ load_filters(json_t *root) CHECK_REQUIRED(bgpsec, BGPSEC_FILTERS) expected_members = 2; - if (!valid_members_count(filters, expected_members)) + if (!json_valid_members_count(filters, expected_members)) return pr_err( "SLURM '%s' must contain only %lu members (RFC 8416 section 3.2)", VALIDATION_OUTPUT_FILTERS, @@ -679,7 +642,7 @@ load_assertions(json_t *root) CHECK_REQUIRED(bgpsec, BGPSEC_ASSERTIONS) expected_members = 2; - if (!valid_members_count(assertions, expected_members)) + if (!json_valid_members_count(assertions, expected_members)) return pr_err( "SLURM '%s' must contain only %lu members (RFC 8416 section 3.2)", LOCALLY_ADDED_ASSERTIONS, @@ -718,7 +681,7 @@ handle_json(json_t *root) return error; expected_members = 3; - if (!valid_members_count(root, expected_members)) + if (!json_valid_members_count(root, expected_members)) return pr_err( "SLURM root must have only %lu members (RFC 8416 section 3.2)", expected_members);