blob: 18fca277bca77db99dd3e7971ac3f6fa68600c6b [file] [log] [blame]
Rich Lanea06d0c32013-03-25 08:52:03 -07001# Copyright 2013, Big Switch Networks, Inc.
2#
3# LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
4# the following special exception:
5#
6# LOXI Exception
7#
8# As a special exception to the terms of the EPL, you may distribute libraries
9# generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
10# that copyright and licensing notices generated by LoxiGen are not altered or removed
11# from the LoxiGen Libraries and the notice provided below is (i) included in
12# the LoxiGen Libraries, if distributed in source code form and (ii) included in any
13# documentation for the LoxiGen Libraries, if distributed in binary form.
14#
15# Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
16#
17# You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
18# a copy of the EPL at:
19#
20# http://www.eclipse.org/legal/epl-v10.html
21#
22# Unless required by applicable law or agreed to in writing, software
23# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
24# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
25# EPL for the specific language governing permissions and limitations
26# under the EPL.
27
28"""
29Python backend for LOXI
30
Rich Lanea06d0c32013-03-25 08:52:03 -070031Target directory structure:
32 pyloxi:
33 loxi:
34 __init__.py
35 of10:
36 __init__.py
37 action.py # Action classes
38 common.py # Structs shared by multiple messages
39 const.py # OpenFlow constants
40 message.py # Message classes
41 util.py # Utility functions
Rich Lanea22233e2013-04-25 13:18:41 -070042 of11: ... # (code generation incomplete)
Rich Lanee02314c2013-05-02 16:42:04 -070043 instruction.py # Instruction classes
Rich Lanea22233e2013-04-25 13:18:41 -070044 of12: ... # (code generation incomplete)
Rich Laneea693752013-03-18 11:05:45 -070045 oxm.py # OXM classes
Rich Lanea22233e2013-04-25 13:18:41 -070046 of13: ... # (code generation incomplete)
Rich Lane2c9938e2013-12-09 17:20:12 -080047 action_id.py # Action ID classes
48 instruction_id.py # Instruction ID classes
Rich Laned82c0a62013-05-02 15:40:35 -070049 meter_band.py # Meter band classes
Rich Lanea06d0c32013-03-25 08:52:03 -070050
51The user will add the pyloxi directory to PYTHONPATH. Then they can
52"import loxi" or "import loxi.of10". The idiomatic import is
53"import loxi.of10 as ofp". The protocol modules (e.g. of10) import
54all of their submodules, so the user can access "ofp.message" without
55further imports. The protocol modules also import the constants from
56the const module directly into their namespace so the user can access
57"ofp.OFPP_NONE".
58"""
59
Rich Laneda5446f2013-11-10 17:21:48 -080060import os
Rich Lanea06d0c32013-03-25 08:52:03 -070061import py_gen.codegen
62
Rich Lane1cd97912014-09-26 15:51:38 -070063PREFIX = 'pyloxi/loxi'
Rich Laneda5446f2013-11-10 17:21:48 -080064
Andreas Wundsam5420b952013-11-15 13:41:01 -080065def generate(install_dir):
Rich Lane1cd97912014-09-26 15:51:38 -070066 py_gen.codegen.codegen(os.path.join(install_dir, PREFIX))