diff options
author | Rob Austein <sra@hactrn.net> | 2008-05-17 01:08:18 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2008-05-17 01:08:18 +0000 |
commit | cd5516da8cbe68c71e108d331b8a93fa4ddffe4b (patch) | |
tree | 2a11feec68672ba14bd503cf1746ed9d5b11e158 /rpkid/rpki/resource_set.py | |
parent | 4afd28fd55f6d59db2630067fec42b8fcf4819fb (diff) |
resource_set.__init__() wasn't collapsing adjacent ranges into
canonical form.
svn path=/rpkid/rpki/resource_set.py; revision=1795
Diffstat (limited to 'rpkid/rpki/resource_set.py')
-rw-r--r-- | rpkid/rpki/resource_set.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/rpkid/rpki/resource_set.py b/rpkid/rpki/resource_set.py index b51d3105..206c9d8b 100644 --- a/rpkid/rpki/resource_set.py +++ b/rpkid/rpki/resource_set.py @@ -175,6 +175,10 @@ class resource_set(list): assert ini is None or ini == "", "Unexpected initializer: %s" % str(ini) assert not self.inherit or not self self.sort() + for i in xrange(len(self) - 2, -1, -1): + if self[i].max + 1 == self[i+1].min: + self[i] = type(self[i])(self[i].min, self[i+1].max) + self.pop(i + 1) if __debug__: for i in xrange(0, len(self) - 1): assert self[i].max < self[i+1].min, "Resource overlap: %s %s" % (self[i], self[i+1]) @@ -239,10 +243,6 @@ class resource_set(list): if this.max > that.max: max = this.max else: max = that.max result.append(type(this)(min, max)) - for i in xrange(len(result) - 2, -1, -1): - if result[i].max + 1 == result[i+1].min: - result[i] = type(result[i])(result[i].min, result[i+1].max) - result.pop(i + 1) return type(self)(result) def intersection(self, other): @@ -665,15 +665,14 @@ if __name__ == "__main__": print "x&y:", v1 def test2(t, s1, s2): - print "x: ", s1 - print "y: ", s2 + print "x: ", s1 + print "y: ", s2 r1 = t(s1) r2 = t(s2) - print "x: ", r1 - print "y: ", r2 - print "x == y:", (r1 == r2) - print "x > y: ", (r1 > r2) - print "x < y: ", (r1 < r2) + print "x: ", r1 + print "y: ", r2 + print "x>y:", (r1 > r2) + print "x<y:", (r1 < r2) test1(t.resource_set_type, r1.to_resource_set(), r2.to_resource_set()) print |