ovsportranges

OVS bitwise port/mask ranges


Keywords
openflow, port, ranges, ovs, ofctl
License
MIT
Install
pip install ovsportranges==0.1.2

Documentation

ovsportranges

Description

Openflow requires port ranges to be defined as bitwise matches. This module provides an easy way to the port/mask ranges for a specified port range.

As described in the ovs-ofctl documentation:

Bitwise match on TCP (or UDP or SCTP) source or destination port. The port and mask are 16-bit numbers written in decimal or in hexadecimal prefixed by 0x. Each 1-bit in mask requires that the corresponding bit in port must match. Each 0-bit in mask causes the corresponding bit to be ignored.

It is recommended to only use this for large ranges that would require a large number of flows.

Installation

pip install ovsportranges

Basic Usage

from ovsportrange import OvsPorts

if __name__ == "__main__":
    ovsports = OvsPorts()
    ranges = ovsports.get_port_ranges(1000, 1999)
    for r in ranges:
        print("Port: {}, Bitmask: {}".format(r.port, r.bitmask))

Output

Port: 1000, Bitmask: 65528
Port: 1008, Bitmask: 65520
Port: 1024, Bitmask: 65024
Port: 1536, Bitmask: 65280
Port: 1792, Bitmask: 65408
Port: 1920, Bitmask: 65472
Port: 1984, Bitmask: 65520