{ "info": { "author": "Job Snijders", "author_email": "job@instituut.net", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Networking" ], "description": "[![Build Status](https://travis-ci.org/job/aggregate6.svg?branch=master)](https://travis-ci.org/job/aggregate6)\n[![Requirements Status](https://requires.io/github/job/aggregate6/requirements.svg?branch=master)](https://requires.io/github/job/aggregate6/requirements/?branch=master)\n[![Coverage Status](https://coveralls.io/repos/github/job/aggregate6/badge.svg?branch=master)](https://coveralls.io/github/job/aggregate6?branch=master)\n\naggregate6\n==========\n\naggregate6 will compress an unsorted list of IP prefixes (both IPv4 and IPv6).\n\nDescription\n-----------\n\nTakes a list of IPv6 prefixes in conventional format on stdin, and performs two\noptimisations to attempt to reduce the length of the prefix list. The first\noptimisation is to remove any supplied prefixes which are superfluous because\nthey are already included in another supplied prefix. For example,\n`2001:67c:208c:10::/64` would be removed if `2001:67c:208c::/48` was\nalso supplied.\n\nThe second optimisation identifies adjacent prefixes that can be combined under\na single, shorter-length prefix. For example, `2001:67c:208c::/48` and\n`2001:67c:208d::/48` can be combined into the single prefix\n`2001:67c:208c::/47`.\n\nThe above optimalisation steps are often useful in context of compressing firewall\nrules or BGP prefix-list filters.\n\nThe following command line options are available:\n\n```\n\t-4 Only output IPv4 prefixes\n\t-6 Only output IPv6 prefixes\n\t-h, --help show help message and exit\n\t-m N Sets the maximum prefix length for entries read, longer prefixes will be discarded prior to processing\n\t-t truncate IP/mask to network/mask\n\t-v Display verbose information about the optimisations\n\t-V Display aggregate6 version\n```\n\nInstallation\n------------\n\nOpenBSD 6.3:\n\n`$ doas pkg_add aggregate6`\n\nOther platforms:\n\n`$ pip3 install aggregate6`\n\nCLI Usage\n---------\n\nEither provide the list of IPv4 and IPv6 prefixes on STDIN, or give filenames\ncontaining lists of IPv4 and IPv6 prefixes as arguments.\n\n```\n$ # via STDIN\n$ cat file_with_list_of_prefixes | aggregate6\n ... output ...\n\n$ # with a filename as argument\n$ aggregate6 file_with_list_of_prefixes [ ... optional_other_prefix_lists ]\n ... output ...\n\n$ # Whitespace separated works too\n$ echo 2001:67c:208c::/48 2000::/3 | aggregate6\n2000::/3\n\n$ # You can combine IPv4 and IPv6\n$ echo 10.0.0.0/16 10.0.0.0/24 2000::/3 | aggregate6\n10.0.0.0/16\n2000::/3\n```\n\nLibrary Usage\n-------------\n\nAggregate6 can be used in your own pyp/python2/python3 project as python module.\nCurrently there is just one simple public function: `aggregate()` which takes a\nlist as parameter.\n\n```\n>>> import from aggregate6 import aggregate\n>>> aggregate([\"10.0.0.0/8\", \"10.0.0.0/24\"])\n['10.0.0.0/8']\n>>>\n```\n\nBugs\n----\n\nPlease report bugs at https://github.com/job/aggregate6/issues\n\nAuthor\n------\n\nJob Snijders \n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/job/aggregate6", "keywords": "ipv4 and ipv6 prefix routing networking", "license": "BSD 2-Clause", "maintainer": "", "maintainer_email": "", "name": "aggregate6", "package_url": "https://pypi.org/project/aggregate6/", "platform": "", "project_url": "https://pypi.org/project/aggregate6/", "project_urls": { "Homepage": "https://github.com/job/aggregate6" }, "release_url": "https://pypi.org/project/aggregate6/1.0.12/", "requires_dist": null, "requires_python": "", "summary": "IPv4 and IPv6 prefix list compressor", "version": "1.0.12" }, "last_serial": 3387750, "releases": { "0.8": [ { "comment_text": "", "digests": { "md5": "bd84f4ab80d90ecacc435dd5df844ac6", "sha256": "428a4b86272bb7184c67a05b0248af969a95ebd59c324244fb97339e738c3bfe" }, "downloads": -1, "filename": "aggregate6-0.8.tar.gz", "has_sig": false, "md5_digest": "bd84f4ab80d90ecacc435dd5df844ac6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5023, "upload_time": "2016-05-28T15:51:06", "url": "https://files.pythonhosted.org/packages/9c/4c/12b01623cc7ff4feaa9ce8982f6f50f90b196658029a80bc99f8a6cfac03/aggregate6-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "19842a408d129526c08ac1f3c3e680d0", "sha256": "867e8219dab348f933a5cd08e46b1059789641bb019191356450a244a77f5f73" }, "downloads": -1, "filename": "aggregate6-0.9.tar.gz", "has_sig": false, "md5_digest": "19842a408d129526c08ac1f3c3e680d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5026, "upload_time": "2016-05-28T16:56:59", "url": "https://files.pythonhosted.org/packages/e5/dd/c6e1d73f6f56fe9b323de86e1fda5e2887b97cbe99513744f8d336533852/aggregate6-0.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "73a67ba6eb2590cff86120d50bfc3627", "sha256": "e24793d3b8650ed6cf2e57927003f5b07a798597c94a6e7e9c0dd4deee80d843" }, "downloads": -1, "filename": "aggregate6-1.0.0.tar.gz", "has_sig": false, "md5_digest": "73a67ba6eb2590cff86120d50bfc3627", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4789, "upload_time": "2017-11-28T18:18:29", "url": "https://files.pythonhosted.org/packages/21/5f/611c63b7dd78e308fe04243d95c458d445617c66897e662e774938aaf74c/aggregate6-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "293334851597f3b2f9daf9969d51760b", "sha256": "a84cda92adb55ef1ca51f0d036b31974279d86363935912056d66136e5bc22b5" }, "downloads": -1, "filename": "aggregate6-1.0.1.tar.gz", "has_sig": false, "md5_digest": "293334851597f3b2f9daf9969d51760b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4819, "upload_time": "2017-11-28T18:23:15", "url": "https://files.pythonhosted.org/packages/e0/5a/19b5b0f8d8a1ac207a09530107081bb5980d68f457433ac30f134c38f4d3/aggregate6-1.0.1.tar.gz" } ], "1.0.10": [ { "comment_text": "", "digests": { "md5": "f2a115677ffb329f2f472db78f3c3c5f", "sha256": "3f43bec709da7eb3d13563d01b404bb4f691604c720064fcf9fb59ce086f0321" }, "downloads": -1, "filename": "aggregate6-1.0.10.tar.gz", "has_sig": false, "md5_digest": "f2a115677ffb329f2f472db78f3c3c5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4912, "upload_time": "2017-11-29T23:45:10", "url": "https://files.pythonhosted.org/packages/c5/f5/e9cfb6a3c208eaafdb76e5a674d908af57879db4ba7028bf14938ff2b09f/aggregate6-1.0.10.tar.gz" } ], "1.0.11": [ { "comment_text": "", "digests": { "md5": "44f473b41867740c9c73b324ab33b8c2", "sha256": "eacfd8cadab32004fbb482f42f3fb96e73aede130f6b64a477aac2b7cb1e2fc7" }, "downloads": -1, "filename": "aggregate6-1.0.11.tar.gz", "has_sig": false, "md5_digest": "44f473b41867740c9c73b324ab33b8c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5255, "upload_time": "2017-11-29T23:48:15", "url": "https://files.pythonhosted.org/packages/d4/8c/05f4815e790a781552920a47d2f9a79579700b3c037bec3f8d05d65a1127/aggregate6-1.0.11.tar.gz" } ], "1.0.12": [ { "comment_text": "", "digests": { "md5": "9a3bda8fffa40425f6b7d4c8e16a86b4", "sha256": "be0d78b8e84f96db2fc67d17955d16f60cbd76adfebd9a62fe1dc7cad9b273d9" }, "downloads": -1, "filename": "aggregate6-1.0.12.tar.gz", "has_sig": false, "md5_digest": "9a3bda8fffa40425f6b7d4c8e16a86b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6026, "upload_time": "2017-12-04T16:22:40", "url": "https://files.pythonhosted.org/packages/07/d9/abe64b9ca4dd28f427d6b56e22edce3b4a65d05a45a78f748ca5f5af06c2/aggregate6-1.0.12.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "f0294b6a1fe61bbc2a07eb4ee933ace2", "sha256": "b408bb223ad61f18f6b0562e877409113be98391950613aa961ef7ed16a6c78f" }, "downloads": -1, "filename": "aggregate6-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f0294b6a1fe61bbc2a07eb4ee933ace2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4831, "upload_time": "2017-11-28T18:56:24", "url": "https://files.pythonhosted.org/packages/8d/37/02976e831c120c1969c802a4b2c3176cf7f794f32e25ba074a2ef90a9da7/aggregate6-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "15dba8d1e04d11f9397f3e2e9a55aee5", "sha256": "904b9f9dc8d51ec025a0d0b1f0e4b2737dfed88c9bf1c20e16c8ff4e49152a7c" }, "downloads": -1, "filename": "aggregate6-1.0.3.tar.gz", "has_sig": false, "md5_digest": "15dba8d1e04d11f9397f3e2e9a55aee5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4750, "upload_time": "2017-11-28T19:40:37", "url": "https://files.pythonhosted.org/packages/46/0b/208c2c6555ab993e3da574225d15635fa7f98d6942d45f167fbb5c8a9589/aggregate6-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "8827c4e437430e3a7ee5bb1cc2bc9fb1", "sha256": "6c964240a5354ec1dcc027a749657ad7c2b48618d2b57ce3d6b73b2e913c26b5" }, "downloads": -1, "filename": "aggregate6-1.0.4.tar.gz", "has_sig": false, "md5_digest": "8827c4e437430e3a7ee5bb1cc2bc9fb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4813, "upload_time": "2017-11-28T19:57:22", "url": "https://files.pythonhosted.org/packages/8a/f9/5bee6d0496f7c2af152bdb3beae070dd68abc72ba5aea9f4cb61331f2db4/aggregate6-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "93f5e50ebef1518aa9c754898ce83b4e", "sha256": "bdccfe93eb123a7d84e039f70f239de4e181b50a718db6383d3b3ae64e725606" }, "downloads": -1, "filename": "aggregate6-1.0.5.tar.gz", "has_sig": false, "md5_digest": "93f5e50ebef1518aa9c754898ce83b4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4815, "upload_time": "2017-11-28T20:23:37", "url": "https://files.pythonhosted.org/packages/ff/54/17a093cd21c48982a8ae821a56e7369f377227788516b1ba16720ad56a1a/aggregate6-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "483a94ad3a4cba4c5eeda5cc2f1db3de", "sha256": "2a741781b678dfe961afbd85b3dc39279e492c9b6b2c3259955bad7160c1bf68" }, "downloads": -1, "filename": "aggregate6-1.0.6.tar.gz", "has_sig": false, "md5_digest": "483a94ad3a4cba4c5eeda5cc2f1db3de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5369, "upload_time": "2017-11-29T00:49:57", "url": "https://files.pythonhosted.org/packages/24/da/c5c7ad7650fd0e6058b8de833ae4baa0b1e794f7ca469064dcf6802575b5/aggregate6-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "38ffa7121eb0458e313947572059cdbd", "sha256": "0b307f8c251f2a4dfe003b8959b3e05835e1a029e60fd93a70ae33888d84978b" }, "downloads": -1, "filename": "aggregate6-1.0.7.tar.gz", "has_sig": false, "md5_digest": "38ffa7121eb0458e313947572059cdbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5407, "upload_time": "2017-11-29T01:40:09", "url": "https://files.pythonhosted.org/packages/f6/19/ab913c144668add347e712436f76acf4952aa8fe75697c2273e90e4b1e5c/aggregate6-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "52d729ffe78c295dc35576233c62fd27", "sha256": "99aa2f42c3beba2aae70909aaf994887dba12b0ec49d7f069b0f8c279c33e25d" }, "downloads": -1, "filename": "aggregate6-1.0.8.tar.gz", "has_sig": false, "md5_digest": "52d729ffe78c295dc35576233c62fd27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5284, "upload_time": "2017-11-29T02:46:37", "url": "https://files.pythonhosted.org/packages/97/91/0d4424753464d900c05eeea42ccb5164407f91b933274badc614220553a9/aggregate6-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "85a6e9105592f93918a4e995751d1d06", "sha256": "a09d54696500bfb8473661c824a75d3748ae7718d366e7334e973017d29cf427" }, "downloads": -1, "filename": "aggregate6-1.0.9.tar.gz", "has_sig": false, "md5_digest": "85a6e9105592f93918a4e995751d1d06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4909, "upload_time": "2017-11-29T23:32:50", "url": "https://files.pythonhosted.org/packages/12/38/103a6401a5b6ed796a51c6acbb6b05328894a6d16d710b5275c824ac7ded/aggregate6-1.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9a3bda8fffa40425f6b7d4c8e16a86b4", "sha256": "be0d78b8e84f96db2fc67d17955d16f60cbd76adfebd9a62fe1dc7cad9b273d9" }, "downloads": -1, "filename": "aggregate6-1.0.12.tar.gz", "has_sig": false, "md5_digest": "9a3bda8fffa40425f6b7d4c8e16a86b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6026, "upload_time": "2017-12-04T16:22:40", "url": "https://files.pythonhosted.org/packages/07/d9/abe64b9ca4dd28f427d6b56e22edce3b4a65d05a45a78f748ca5f5af06c2/aggregate6-1.0.12.tar.gz" } ] }