*/
static int
add_roa_deltas(struct hashable_roa *roas1, struct hashable_roa *roas2,
- struct deltas *deltas, int op)
+ struct deltas *deltas, int op, char r1type)
{
struct hashable_roa *n1; /* A node from @roas1 */
struct hashable_roa *n2; /* A node from @roas2 */
struct hashable_roa *tmp;
+ unsigned int r;
+ unsigned int roa1_count;
int error;
+ r = 0;
+ roa1_count = HASH_COUNT(roas1);
+
HASH_ITER(hh, roas1, n1, tmp) {
HASH_FIND(hh, roas2, &n1->data, sizeof(n1->data), n2);
if (n2 == NULL) {
- error = deltas_add_roa(deltas, &n1->data, op);
+ error = deltas_add_roa(deltas, &n1->data, op,
+ r1type, r, roa1_count);
if (error)
return error;
}
+ r++;
}
return 0;
if (error)
return error;
- error = add_roa_deltas(new->roas, old->roas, deltas, FLAG_ANNOUNCEMENT);
+ error = add_roa_deltas(new->roas, old->roas, deltas, FLAG_ANNOUNCEMENT,
+ 'n');
if (error)
goto fail;
- error = add_roa_deltas(old->roas, new->roas, deltas, FLAG_WITHDRAWAL);
+ error = add_roa_deltas(old->roas, new->roas, deltas, FLAG_WITHDRAWAL,
+ 'o');
if (error)
goto fail;
error = add_router_key_deltas(new->router_keys, old->router_keys,
}
int
-deltas_add_roa(struct deltas *deltas, struct vrp const *vrp, int op)
+deltas_add_roa(struct deltas *deltas, struct vrp const *vrp, int op,
+ char r1type, unsigned int roa_counter, unsigned int roa_count)
{
union {
struct delta_v4 v4;
return deltas_v6_add(get_deltas_array6(deltas, op), &delta.v6);
}
- pr_val_err("Unknown protocol: [%u %s/%u-%u %u]",
+ pr_val_err("Unknown protocol: [%u %s/%u-%u %u] %c %u %u",
vrp->asn,
addr2str6(&vrp->prefix.v6, buffer),
vrp->prefix_length,
vrp->max_prefix_length,
- vrp->addr_fam);
+ vrp->addr_fam,
+ r1type,
+ roa_counter,
+ roa_count);
return 0;
}
void deltas_refget(struct deltas *);
void deltas_refput(struct deltas *);
-int deltas_add_roa(struct deltas *, struct vrp const *, int);
+int deltas_add_roa(struct deltas *, struct vrp const *, int,
+ char, unsigned int, unsigned int);
int deltas_add_router_key(struct deltas *, struct router_key const *, int);
bool deltas_is_empty(struct deltas *);