0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00

Prefix comparison bug (hopefully) fixed.

This commit is contained in:
Martin Mares 2003-02-27 10:48:30 +00:00
parent 6ea8ca1469
commit d85e1f0e2f

View File

@ -81,6 +81,8 @@ pm_path_compare(struct f_path_mask *m1, struct f_path_mask *m2)
int int
val_compare(struct f_val v1, struct f_val v2) val_compare(struct f_val v1, struct f_val v2)
{ {
int rc;
if ((v1.type == T_VOID) && (v2.type == T_VOID)) if ((v1.type == T_VOID) && (v2.type == T_VOID))
return 0; return 0;
if (v1.type == T_VOID) /* Hack for else */ if (v1.type == T_VOID) /* Hack for else */
@ -100,8 +102,15 @@ val_compare(struct f_val v1, struct f_val v2)
if (v1.val.i < v2.val.i) return -1; if (v1.val.i < v2.val.i) return -1;
return 1; return 1;
case T_IP: case T_IP:
case T_PREFIX:
return ipa_compare(v1.val.px.ip, v2.val.px.ip); return ipa_compare(v1.val.px.ip, v2.val.px.ip);
case T_PREFIX:
if (rc = ipa_compare(v1.val.px.ip, v2.val.px.ip))
return rc;
if (v1.val.px.len < v2.val.px.len)
return -1;
if (v1.val.px.len > v2.val.px.len)
return 1;
return 0;
case T_PATH_MASK: case T_PATH_MASK:
return pm_path_compare(v1.val.path_mask, v2.val.path_mask); return pm_path_compare(v1.val.path_mask, v2.val.path_mask);
default: default: