{ "info": { "author": "Hiroaki Kawai", "author_email": "hiroaki.kawai@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "About\r\n-----\r\nofpstr is openflow stringer library and it converts string into \r\nopenflow binary message, like ovs-ofctl flow rule arguments.\r\nIt can also convert binary message back to string representation.\r\nThe syntax is DIFFERENT from ovs-ofctl, using more direct naming \r\nas is defined in the spec. For example, ovs-ofctl use `dl_vlan`\r\nfor vlan tagging, which is not present in openflow 1.3 spec.\r\nofpstr use `vlan_vid` for this.\r\n\r\nusage\r\n-----\r\nThere are two modes of `oxm` and `ofp_mod_flow`.\r\n\r\n`oxm` example:\r\n\r\n.. code:: python\r\n\r\n import ofpstr.oxm\r\n # string to binary message\r\n oxm_msg,parsed_len = ofpstr.oxm.str2oxm(\"in_port=1,vlan_vid=0x1,eth_type=0x0800\")\r\n # binary message to string\r\n print(ofpstr.oxm.oxm2str(oxm_msg))\r\n\r\n`ofp_mod_flow` example:\r\n\r\n.. code:: python\r\n\r\n import ofpstr.ofp4\r\n # string to binary message\r\n ofp_flow_mod_msg = ofpstr.ofp4.str2mod(\"in_port=1,@apply,output=controller\", xid=16)\r\n # binary message to string\r\n print(ofpstr.ofp4.mod2str(ofp_flow_mod_msg))\r\n # in_port=1,@apply,output=controller\r\n\r\ngeneral syntax\r\n--------------\r\nTokens are separated by comma, field may take argument with `=` separator.\r\nargument may have mask with \"/\" separator. Examples:\r\n\r\n.. code:: ini\r\n\r\n # integer mode\r\n metadata=0x01/0x0F\r\n tunnel_id=10\r\n # mac mode\r\n eth_dst=01:00:00:00:00:00/01:00:00:00:00:00\r\n # ipv4 mode\r\n ipv4_src=192.168.1.0/24\r\n ipv4_src=192.168.1.0/255.255.255.0\r\n # ipv6 mode\r\n ipv6_src=::\r\n # port mode may use special names or integer\r\n in_port=controller\r\n in_port=1\r\n # pkt mode use two integer representing (namespace,ns_type)\r\n packet_type=0:1\r\n # hex mode use hex string (like binascii hex)\r\n dot11_frame_ctrl=c000/ff00\r\n # ssid mode use string directly\r\n dot11_ssid=TestAP\r\n\r\nFull oxm list follows:\r\n\r\n* integer mode: metadata, eth_type, vlan_vid, vlan_pcp, ip_dscp, ip_ecn, ip_proto, \r\n tcp_src, tcp_dst, udp_src, udp_dst, sctp_src, sctp_dst, icmpv4_type, icmpv4_code, \r\n arp_op, ipv6_label, icmpv6_type, icmpv6_code, mpls_bale, mpls_tc, mpls_bos, \r\n pbb_isid, tunnel_id, ipv6_exthdr, pbb_uca, tcp_flags, \r\n nxm_in_port, nxm_eth_type, nxm_vlan_tci, nxm_ip_tos, nxm_ip_proto, \r\n nxm_tcp_src, nxm_tcp_dst, nxm_udp_src, nxm_udp_dst, nxm_icmp_type, nxm_icmp_code, nxm_arp_op, \r\n nxm_reg0, nxm_reg1, nxm_reg2, nxm_reg3, nxm_reg4, nxm_reg5, nxm_reg6, nxm_reg7, \r\n nxm_tun_id, nxm_icmpv6_type, nxm_icmpv6_code, nxm_ip_frag, nxm_ipv6_label, nxm_ip_ecn, nxm_ip_ttl, \r\n nxm_pkt_mark, nxm_tcp_flags, nxm_dp_hash, nxm_recirc_id, nxm_conj_id, \r\n nxm_tun_gbp_id, nxm_tun_gbp_flags, \r\n dot11, dot11_public_action, dot11_tag, \r\n radiotap_tsft, radiotap_flags, radiotap_lock_quality, radiotap_tx_attenuation, \r\n radiotap_db_tx_attenuation, radiotap_antenna, radiotap_db_antsignal, radiotap_db_antnoise, \r\n radiotap_rx_flags, radiotap_tx_flags, radiotap_rts_retries, radiotap_data_retries, \r\n radiotap_dbm_antsignal, radiotap_dbm_antnoise, radiotap_dbm_tx_power\r\n* mac mode: eth_dst, eth_src, arp_sha, arp_tha, ipv6_nd_sll, ipv6_nd_tll, \r\n nxm_eth_dst, nxm_eth_src, nxm_arp_sha, nxm_arp_tha, nxm_nd_sll, nxm_nd_tll, \r\n dot11_addr1, dot11_addr2, dot11_addr3, dot11_addr4\r\n* ipv4 mode: ipv4_src, ipv4_dst, arp_spa, arp_tpa,\r\n nxm_ip_src, nxm_ip_dst, nxm_arp_spa, nxm_arp_tpa, nxm_tun_ipv4_src, nxm_tun_ipv4_dst\r\n* ipv6 mode: ipv6_src, ipv6_dst, ipv6_nd_target, \r\n nxm_ipv6_src, nxm_ipv6_dst, nxm_nd_target\r\n* port mode: in_port, in_phy_port, actset_output\r\n* pkt mode: packet_type\r\n* hex mode: dot11_frame_ctrl, dot11_action_category, dot11_tag_vendor, radiotap_fhss\r\n* ssid mode: dot11_ssid\r\n* rate mode: radiotap_rate\r\n* ch mode: radiotap_channel\r\n* comp mode: radiotap_mcs, radiotap_ampdu_status\r\n* vht mode: radiotap_vht\r\n\r\nActions may take arguments in function style. oxm with set\\_ prefix will be set_field action.\r\nSome nxm actions accepts only function style. Examples:\r\n\r\n.. code:: ini\r\n\r\n # alias for set_vlan_vid=10\r\n set_vlan_vid(10)\r\n # nicira extensions\r\n cnt_ids(0x1,0x2,0x3)\r\n reg_load(nxm_vlan_tci=0xa/0x0fff)\r\n reg_load2(nxm_vlan_tci=0xa/0x0fff)\r\n reg_move(nxm_eth_dst=nxm_eth_src)\r\n reg_move(nxm_eth_dst[0:4]=nxm_eth_src[4:8])\r\n resubmit(in_port)\r\n resubmit(1)\r\n resubmit_table(in_port,all)\r\n resubmit_table(1,1)\r\n set_tunnel(0x11223344)\r\n set_tunnel64(0x1122334455667788)\r\n pop_queue()\r\n note(some text)\r\n multipath(eth_src,50,hrw,12,0x0,nxm_reg0[0:4])\r\n bundle(eth_src,50,active_backup,nxm_in_port,slaves(1,2,3))\r\n bundle_load(symmetric_l4,60,hrw,nxm_in_port,nxm_reg0[0:16],slaves(2,3))\r\n output_reg(in_port)\r\n output_reg(in_port[0:1])\r\n output_reg2(in_port)\r\n output_reg2(in_port[0:1])\r\n learn(nxm_in_port=0x10,nxm_eth_dst=nxm_eth_src,reg_load(nxm_reg1[16:32]=nxm_in_port))\r\n exit()\r\n\r\n* integer mode: output, set_mpls_ttl, push_vlan, pop_mpls, push_mpls, \r\n set_queue, group, set_nw_ttl, push_pbb, \r\n* flag mode: copy_ttl_out, copy_ttl_in, dec_mpls_ttl, dec_nw_ttl, pop_pbb\r\n\r\nAdvanced features\r\n-----------------\r\nIn addition to OFPT_FLOW_MOD, several openflow methods are provided:\r\n\r\n.. code:: python\r\n\r\n import ofpstr.ofp4\r\n \r\n # OFPMP_FLOW\r\n ofpstr.ofp4.text2mpflow\r\n ofpstr.ofp4.mpflow2text\r\n \r\n # OFPT_GROUP\r\n ofpstr.ofp4.str2group\r\n ofpstr.ofp4.group2str\r\n \r\n # OFPMP_GROUP / OFPT_MULTIPART_*\r\n ofpstr.ofp4.text2mpgroup\r\n ofpstr.ofp4.mpgroup2text\r\n \r\n # OFPMP_GROUP_DESC / OFPT_MULTIPART_*\r\n ofpstr.ofp4.text2mpgroupdesc\r\n ofpstr.ofp4.mpgroupdesc2text\r\n\r\nNote these functions were rewritten in 0.2, \r\n\r\n\r\nLICENSE\r\n-------\r\nofpstr is available under Apache 2.0 License and Python Software \r\nFoundation License.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hkwi/ofpstr/", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "ofpstr", "package_url": "https://pypi.org/project/ofpstr/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ofpstr/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/hkwi/ofpstr/" }, "release_url": "https://pypi.org/project/ofpstr/0.2.0/", "requires_dist": null, "requires_python": null, "summary": "Openflow stringer library", "version": "0.2.0" }, "last_serial": 2300078, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "475d40a32149fba6d5ccb3bc73479bac", "sha256": "64e59186e461a697388cf3f35549d4d04122db3950fe8f730c011c546e667dc5" }, "downloads": -1, "filename": "ofpstr-0.1.tar.gz", "has_sig": false, "md5_digest": "475d40a32149fba6d5ccb3bc73479bac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11361, "upload_time": "2015-06-02T05:35:44", "url": "https://files.pythonhosted.org/packages/08/69/3ee4c1f7b8404ccb783b0f0b6c6a03c8d031b8129879dcbf79d929d2628f/ofpstr-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "1696faef5513e6c7ce3b74a8541b91ef", "sha256": "148f6413242edaceb756143bcb1a2d26d8d1d4fe4c094ec2e8496c7ae5c09130" }, "downloads": -1, "filename": "ofpstr-0.1.1.tar.gz", "has_sig": false, "md5_digest": "1696faef5513e6c7ce3b74a8541b91ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11381, "upload_time": "2015-06-02T09:32:25", "url": "https://files.pythonhosted.org/packages/db/d1/74ffc1257cefb0c9f33cf029476e443ac94536623b48e448e9bf2a9e864e/ofpstr-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "eb9032a2b716cda7fdb5d5c078eb3219", "sha256": "81137ffe92ac133be8ed268bcd922c7bb3f633539063d5921a74a64efe8d82ed" }, "downloads": -1, "filename": "ofpstr-0.1.10.tar.gz", "has_sig": false, "md5_digest": "eb9032a2b716cda7fdb5d5c078eb3219", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23986, "upload_time": "2016-01-29T07:21:09", "url": "https://files.pythonhosted.org/packages/fb/e3/62a1edb4c553fb53539dc82261c3003d5beea6b982680d670b54154f24aa/ofpstr-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "4c628df03558cd135573bea8310df9e9", "sha256": "b1903ec225f5834fcb50b3c2bb939e3cdcfa0e41de64561385fd341ef48f6db6" }, "downloads": -1, "filename": "ofpstr-0.1.11.tar.gz", "has_sig": false, "md5_digest": "4c628df03558cd135573bea8310df9e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24010, "upload_time": "2016-01-29T11:24:16", "url": "https://files.pythonhosted.org/packages/62/19/b9d3802f966388e4c5d4b7a908a69b473d60492d0174f13083e1fb6ea134/ofpstr-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "09b6e39f3c21de5a6d6dfce6b39b3f2b", "sha256": "cdf61d8667a2da8e29918d57db89aa3386a6a82ffbe400d755cb86ebf2fd69ab" }, "downloads": -1, "filename": "ofpstr-0.1.12.tar.gz", "has_sig": false, "md5_digest": "09b6e39f3c21de5a6d6dfce6b39b3f2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24961, "upload_time": "2016-02-27T01:44:30", "url": "https://files.pythonhosted.org/packages/48/7d/89a75533ab4ebddf2698740bbebe7116c0a1fdd12bf6fa02bcb9b75255d8/ofpstr-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "d5cdbeaaf4363ba1ac17bfd3ff7f092e", "sha256": "2ac61b4fd6c9b7d0d94fe6a645ee8308a8c89315b00b9bdc2b0503398ed82859" }, "downloads": -1, "filename": "ofpstr-0.1.13.tar.gz", "has_sig": false, "md5_digest": "d5cdbeaaf4363ba1ac17bfd3ff7f092e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25312, "upload_time": "2016-03-02T02:55:23", "url": "https://files.pythonhosted.org/packages/be/eb/2d602c1866eecd620e7d1ac752d765a318841df9ef8f611190efabfe73dd/ofpstr-0.1.13.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "5ec27b058c460f6e17556ef88ef4ebaf", "sha256": "da971fd8eacab4ab705cc09d4b9cc3cd10ffeca86e30f8b0e619bbbfb09e9a0b" }, "downloads": -1, "filename": "ofpstr-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5ec27b058c460f6e17556ef88ef4ebaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12603, "upload_time": "2015-06-08T05:49:27", "url": "https://files.pythonhosted.org/packages/ad/52/92ec06539fd6610eb7053e84ba59237d98f9aa07fcd942d03836a188c7b0/ofpstr-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "035b2ae3f024b989000698082e252e9d", "sha256": "b6f9e0a5b096be85a98f9a5fcd473710529d8f7f0b48119e0ffda6b7b2c896b7" }, "downloads": -1, "filename": "ofpstr-0.1.3.tar.gz", "has_sig": false, "md5_digest": "035b2ae3f024b989000698082e252e9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12606, "upload_time": "2015-06-08T09:08:25", "url": "https://files.pythonhosted.org/packages/33/bd/934c3a11fccdecd48eadf1eb51825287ac355329021661b83d7a95fcddce/ofpstr-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "22b8cdbf48867af6358944a7c02dd9ff", "sha256": "11180205fdeabef2276ec468680143b06d6258cfa9f8222db4f630d567db2367" }, "downloads": -1, "filename": "ofpstr-0.1.4.tar.gz", "has_sig": false, "md5_digest": "22b8cdbf48867af6358944a7c02dd9ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20418, "upload_time": "2015-12-24T05:25:49", "url": "https://files.pythonhosted.org/packages/b0/34/f2b77beffc4a2d974e7348fdc1b3fc7cefe9a78a89b5187e453438b4b6e4/ofpstr-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "3ea6aabde2bb851da62a1033e423852d", "sha256": "7f5635cbf2e5cf1d6a81547b4ee6636ba78e50250ef8e3ee7f1a520de38117a2" }, "downloads": -1, "filename": "ofpstr-0.1.5.tar.gz", "has_sig": false, "md5_digest": "3ea6aabde2bb851da62a1033e423852d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21169, "upload_time": "2015-12-24T13:53:19", "url": "https://files.pythonhosted.org/packages/64/05/ee5b6cefd68619cc652b821529175963b0ac7d9e565070ba92eb2ee3d132/ofpstr-0.1.5.tar.gz" } ], "0.1.6": [], "0.1.7": [ { "comment_text": "", "digests": { "md5": "f7255176eb70fae2989a786f1d2ed948", "sha256": "aaf167afba4db5391f4ab0e7ff76f3cbb4f4107d5dc292d8185557a98c0b6dda" }, "downloads": -1, "filename": "ofpstr-0.1.7.tar.gz", "has_sig": false, "md5_digest": "f7255176eb70fae2989a786f1d2ed948", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23799, "upload_time": "2016-01-27T13:42:42", "url": "https://files.pythonhosted.org/packages/46/50/39c417f8ff199c52de3290fdce4f80872bb556291ed8ed37253b77f4e983/ofpstr-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "9a2b8423d35fd58650bbfa6244270f12", "sha256": "c3fe91f4e9000fe043dca43cc5ca369581e44ae749949fab193e5f6aa559854c" }, "downloads": -1, "filename": "ofpstr-0.1.8.tar.gz", "has_sig": false, "md5_digest": "9a2b8423d35fd58650bbfa6244270f12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23909, "upload_time": "2016-01-28T17:29:51", "url": "https://files.pythonhosted.org/packages/6f/64/48dbedcdafaa3cad4cbfffb7de41f017d74c8ca755a14d92e553bcfa9933/ofpstr-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "c310cf32a420f9b452bf505c6f8d580d", "sha256": "e8feb99c01f6e7b11ec250d59b46c92286aed0973c95df15024635da843bf816" }, "downloads": -1, "filename": "ofpstr-0.1.9.tar.gz", "has_sig": false, "md5_digest": "c310cf32a420f9b452bf505c6f8d580d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24097, "upload_time": "2016-01-29T01:53:52", "url": "https://files.pythonhosted.org/packages/0f/40/a04f89972f1b1d5cc3789b2625f1a2c1a9f01349c17ff01786cbf349d9c1/ofpstr-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "52acdbe7f97d3f7ebd67c372f4011cfe", "sha256": "addca90bc1c1f6d61b1ed3c5840a6b4feab81d31963a851f27ea521aa07ef838" }, "downloads": -1, "filename": "ofpstr-0.2.0.tar.gz", "has_sig": false, "md5_digest": "52acdbe7f97d3f7ebd67c372f4011cfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26097, "upload_time": "2016-08-24T09:25:41", "url": "https://files.pythonhosted.org/packages/24/9e/d55016f267dca2d008e30b743b30418fa3183f7627cd7ba1e05de8908dd2/ofpstr-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "52acdbe7f97d3f7ebd67c372f4011cfe", "sha256": "addca90bc1c1f6d61b1ed3c5840a6b4feab81d31963a851f27ea521aa07ef838" }, "downloads": -1, "filename": "ofpstr-0.2.0.tar.gz", "has_sig": false, "md5_digest": "52acdbe7f97d3f7ebd67c372f4011cfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26097, "upload_time": "2016-08-24T09:25:41", "url": "https://files.pythonhosted.org/packages/24/9e/d55016f267dca2d008e30b743b30418fa3183f7627cd7ba1e05de8908dd2/ofpstr-0.2.0.tar.gz" } ] }