#include "object/signed_object.h"
static int
-print_addr4(struct resources *parent, long asn, struct ROAIPAddress *roa_addr)
+print_addr4(struct resources *parent, unsigned long asn,
+ struct ROAIPAddress *roa_addr)
{
struct ipv4_prefix prefix;
- long max_length;
+ unsigned long max_length;
char str[INET_ADDRSTRLEN];
const char *str2;
int error;
return error;
if (roa_addr->maxLength != NULL) {
- error = asn_INTEGER2long(roa_addr->maxLength, &max_length);
+ error = asn_INTEGER2ulong(roa_addr->maxLength, &max_length);
if (error) {
if (errno)
- pr_errno(errno, "Error casting ROA's IPv4 maxLength: ");
- return pr_err("The ROA's IPv4 maxLength isn't a valid long");
+ pr_errno(errno, "Error casting ROA's IPv4 maxLength");
+ return pr_err("The ROA's IPv4 maxLength isn't a valid unsigned long");
}
if (max_length < 0 || 32 < max_length) {
- return pr_err("maxLength (%ld) is out of bounds (0-32).",
+ return pr_err("maxLength (%lu) is out of bounds (0-32).",
max_length);
}
if (prefix.len > max_length) {
- return pr_err("Prefix length (%u) > maxLength (%ld)",
+ return pr_err("Prefix length (%u) > maxLength (%lu)",
prefix.len, max_length);
}
}
prefix.len);
}
- printf("AS%ld,%s/%u", asn, str2, prefix.len);
+ printf("AS%lu,%s/%u", asn, str2, prefix.len);
if (roa_addr->maxLength != NULL)
- printf(",%ld", max_length);
+ printf(",%lu", max_length);
else
printf(",%u", prefix.len);
printf("\n");
}
static int
-print_addr6(struct resources *parent, long asn, struct ROAIPAddress *roa_addr)
+print_addr6(struct resources *parent, unsigned long asn,
+ struct ROAIPAddress *roa_addr)
{
struct ipv6_prefix prefix;
- long max_length;
+ unsigned long max_length;
char str[INET6_ADDRSTRLEN];
const char *str2;
int error;
return error;
if (roa_addr->maxLength != NULL) {
- error = asn_INTEGER2long(roa_addr->maxLength, &max_length);
+ error = asn_INTEGER2ulong(roa_addr->maxLength, &max_length);
if (error) {
if (errno)
- pr_errno(errno, "Error casting ROA's IPv6 maxLength: ");
- return pr_err("The ROA's IPv6 maxLength isn't a valid long");
+ pr_errno(errno, "Error casting ROA's IPv6 maxLength");
+ return pr_err("The ROA's IPv6 maxLength isn't a valid unsigned long");
}
if (max_length < 0 || 128 < max_length) {
- return pr_err("maxLength (%ld) is out of bounds (0-128).",
+ return pr_err("maxLength (%lu) is out of bounds (0-128).",
max_length);
}
if (prefix.len > max_length) {
- return pr_err("Prefix length (%u) > maxLength (%ld)",
+ return pr_err("Prefix length (%u) > maxLength (%lu)",
prefix.len, max_length);
}
}
prefix.len);
}
- printf("AS%ld,%s/%u", asn, str2, prefix.len);
+ printf("AS%lu,%s/%u", asn, str2, prefix.len);
if (roa_addr->maxLength != NULL)
- printf(",%ld", max_length);
+ printf(",%lu", max_length);
else
printf(",%u", prefix.len);
printf("\n");
}
static int
-print_addr(struct resources *parent, long asn, uint8_t family,
+print_addr(struct resources *parent, unsigned long asn, uint8_t family,
struct ROAIPAddress *roa_addr)
{
switch (family) {
__handle_roa(struct RouteOriginAttestation *roa, struct resources *parent)
{
struct ROAIPAddressFamily *block;
- unsigned long as_id;
- long version;
+ unsigned long as_id, version;
int b;
int a;
int error;
if (roa->version != NULL) {
- error = asn_INTEGER2long(roa->version, &version);
+ error = asn_INTEGER2ulong(roa->version, &version);
if (error) {
if (errno)
- pr_errno(errno, "Error casting ROA's version: ");
+ pr_errno(errno, "Error casting ROA's version");
return pr_err("The ROA's version isn't a valid long");
}
/* rfc6482#section-3.1 */
if (version != 0)
- return pr_err("ROA's version (%ld) is nonzero.", version);
+ return pr_err("ROA's version (%lu) is nonzero.", version);
}
error = asn_INTEGER2ulong(&roa->asID, &as_id);
if (error) {
if (errno)
- pr_errno(errno, "Error casting ROA's AS ID value: ");
+ pr_errno(errno, "Error casting ROA's AS ID value");
return pr_err("ROA's AS ID couldn't be parsed as unsigned long");
}
/* rfc6482#section-3.2 (more or less.) */
if (!resources_contains_asn(parent, as_id)) {
- return pr_err("ROA is not allowed to attest for AS %d",
+ return pr_err("ROA is not allowed to attest for AS %lu",
as_id);
}
error = asn_INTEGER2ulong(&roa->asID, &as_id);
if (error) {
if (errno)
- pr_errno(errno, "Error casting AS ID at address list: ");
- return error;
+ pr_errno(errno, "Error casting AS ID at address list");
+ return pr_err("Address list AS ID couldn't be parsed as unsigned long");
}
error = print_addr(parent, as_id,
block->addressFamily.buf[1],
error = asn_INTEGER2ulong(&min, &asn_min);
if (error) {
if (errno)
- pr_errno(errno, "Error converting ASN min value: ");
+ pr_errno(errno, "Error converting ASN min value");
return pr_err("Added ASN min value isn't a valid unsigned long");
}
error = asn_INTEGER2ulong(&max, &asn_max);
if (error) {
if (errno)
- pr_errno(errno, "Error converting ASN max value: ");
+ pr_errno(errno, "Error converting ASN max value");
return pr_err("Added ASN max value isn't a valid unsigned long");
}
if (parent && !rasn_contains(parent->asns, asn_min, asn_max))
return pr_enomem();
}
- error = rasn_add(resources->asns, min, max);
+ error = rasn_add(resources->asns, asn_min, asn_max);
if (error){
pr_err("Error adding ASN range to certificate resources: %s",
sarray_err2str(error));
}
bool
-resources_contains_asn(struct resources *res, long asn)
+resources_contains_asn(struct resources *res, unsigned long asn)
{
return rasn_contains(res->asns, asn, asn);
}
#include "sorted_array.h"
struct asn_node {
- long min;
- long max;
+ unsigned long min;
+ unsigned long max;
};
static enum sarray_comparison
asn_cmp(void *arg1, void *arg2)
{
- long n1min = ((struct asn_node *) arg1)->min;
- long n1max = ((struct asn_node *) arg1)->max;
- long n2min = ((struct asn_node *) arg2)->min;
- long n2max = ((struct asn_node *) arg2)->max;
+ unsigned long n1min = ((struct asn_node *) arg1)->min;
+ unsigned long n1max = ((struct asn_node *) arg1)->max;
+ unsigned long n2min = ((struct asn_node *) arg2)->min;
+ unsigned long n2max = ((struct asn_node *) arg2)->max;
if (n1min == n2min && n1max == n2max)
return SACMP_EQUAL;
}
int
-rasn_add(struct resources_asn *asns, ASId_t min, ASId_t max)
+rasn_add(struct resources_asn *asns, unsigned long min, unsigned long max)
{
- unsigned long l_min;
- unsigned long l_max;
- int error;
-
- error = asn_INTEGER2ulong(&min, &l_min);
- if (error) {
- if (errno)
- pr_errno(errno, "ASN min value: ");
- return pr_err("ASN min value isn't a valid unsigned long");
- }
- error = asn_INTEGER2ulong(&max, &l_max);
- if (error) {
- if (errno)
- pr_errno(errno, "ASN max value: ");
- return pr_err("ASN max value isn't a valid unsigned long");
- }
- struct asn_node n = { l_min, l_max };
+ struct asn_node n = { min, max };
return sarray_add((struct sorted_array *) asns, &n);
}
}
bool
-rasn_contains(struct resources_asn *asns, long min, long max)
+rasn_contains(struct resources_asn *asns, unsigned long min, unsigned long max)
{
struct asn_node n = { min, max };
return sarray_contains((struct sorted_array *) asns, &n);