blob: 752ac6dac7eb8e14523e538ce3f51ce8b91706e5 [file] [log] [blame]
Sreeju Sreedhare3fefd92019-04-02 15:57:15 -07001
2# Copyright 2017-present Open Networking Foundation
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16
17# Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
18# Copyright (c) 2011, 2012 Open Networking Foundation
19# Copyright (c) 2012, 2013 Big Switch Networks, Inc.
20# See the file LICENSE.pyloxi which should have been included in the source distribution
21
22# Automatically generated by LOXI from template module.py
23# Do not modify
24
25import struct
26import loxi
27import util
28import loxi.generic_util
29
30import sys
31ofp = sys.modules['loxi.of14']
32
33class port_stats_prop(loxi.OFObject):
34 subtypes = {}
35
36
37 def __init__(self, type=None):
38 if type != None:
39 self.type = type
40 else:
41 self.type = 0
42 return
43
44 def pack(self):
45 packed = []
46 packed.append(struct.pack("!H", self.type))
47 packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
48 length = sum([len(x) for x in packed])
49 packed[1] = struct.pack("!H", length)
50 return ''.join(packed)
51
52 @staticmethod
53 def unpack(reader):
54 subtype, = reader.peek('!H', 0)
55 subclass = port_stats_prop.subtypes.get(subtype)
56 if subclass:
57 return subclass.unpack(reader)
58
59 obj = port_stats_prop()
60 obj.type = reader.read("!H")[0]
61 _length = reader.read("!H")[0]
62 orig_reader = reader
63 reader = orig_reader.slice(_length, 4)
64 return obj
65
66 def __eq__(self, other):
67 if type(self) != type(other): return False
68 if self.type != other.type: return False
69 return True
70
71 def pretty_print(self, q):
72 q.text("port_stats_prop {")
73 with q.group():
74 with q.indent(2):
75 q.breakable()
76 q.breakable()
77 q.text('}')
78
79
80class ethernet(port_stats_prop):
81 type = 0
82
83 def __init__(self, rx_frame_err=None, rx_over_err=None, rx_crc_err=None, collisions=None):
84 if rx_frame_err != None:
85 self.rx_frame_err = rx_frame_err
86 else:
87 self.rx_frame_err = 0
88 if rx_over_err != None:
89 self.rx_over_err = rx_over_err
90 else:
91 self.rx_over_err = 0
92 if rx_crc_err != None:
93 self.rx_crc_err = rx_crc_err
94 else:
95 self.rx_crc_err = 0
96 if collisions != None:
97 self.collisions = collisions
98 else:
99 self.collisions = 0
100 return
101
102 def pack(self):
103 packed = []
104 packed.append(struct.pack("!H", self.type))
105 packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
106 packed.append('\x00' * 4)
107 packed.append(struct.pack("!Q", self.rx_frame_err))
108 packed.append(struct.pack("!Q", self.rx_over_err))
109 packed.append(struct.pack("!Q", self.rx_crc_err))
110 packed.append(struct.pack("!Q", self.collisions))
111 length = sum([len(x) for x in packed])
112 packed[1] = struct.pack("!H", length)
113 return ''.join(packed)
114
115 @staticmethod
116 def unpack(reader):
117 obj = ethernet()
118 _type = reader.read("!H")[0]
119 assert(_type == 0)
120 _length = reader.read("!H")[0]
121 orig_reader = reader
122 reader = orig_reader.slice(_length, 4)
123 reader.skip(4)
124 obj.rx_frame_err = reader.read("!Q")[0]
125 obj.rx_over_err = reader.read("!Q")[0]
126 obj.rx_crc_err = reader.read("!Q")[0]
127 obj.collisions = reader.read("!Q")[0]
128 return obj
129
130 def __eq__(self, other):
131 if type(self) != type(other): return False
132 if self.rx_frame_err != other.rx_frame_err: return False
133 if self.rx_over_err != other.rx_over_err: return False
134 if self.rx_crc_err != other.rx_crc_err: return False
135 if self.collisions != other.collisions: return False
136 return True
137
138 def pretty_print(self, q):
139 q.text("ethernet {")
140 with q.group():
141 with q.indent(2):
142 q.breakable()
143 q.text("rx_frame_err = ");
144 q.text("%#x" % self.rx_frame_err)
145 q.text(","); q.breakable()
146 q.text("rx_over_err = ");
147 q.text("%#x" % self.rx_over_err)
148 q.text(","); q.breakable()
149 q.text("rx_crc_err = ");
150 q.text("%#x" % self.rx_crc_err)
151 q.text(","); q.breakable()
152 q.text("collisions = ");
153 q.text("%#x" % self.collisions)
154 q.breakable()
155 q.text('}')
156
157port_stats_prop.subtypes[0] = ethernet
158
159class experimenter(port_stats_prop):
160 subtypes = {}
161
162 type = 65535
163
164 def __init__(self, experimenter=None, exp_type=None, experimenter_data=None):
165 if experimenter != None:
166 self.experimenter = experimenter
167 else:
168 self.experimenter = 0
169 if exp_type != None:
170 self.exp_type = exp_type
171 else:
172 self.exp_type = 0
173 if experimenter_data != None:
174 self.experimenter_data = experimenter_data
175 else:
176 self.experimenter_data = ''
177 return
178
179 def pack(self):
180 packed = []
181 packed.append(struct.pack("!H", self.type))
182 packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
183 packed.append(struct.pack("!L", self.experimenter))
184 packed.append(struct.pack("!L", self.exp_type))
185 packed.append(self.experimenter_data)
186 length = sum([len(x) for x in packed])
187 packed[1] = struct.pack("!H", length)
188 return ''.join(packed)
189
190 @staticmethod
191 def unpack(reader):
192 subtype, = reader.peek('!L', 4)
193 subclass = experimenter.subtypes.get(subtype)
194 if subclass:
195 return subclass.unpack(reader)
196
197 obj = experimenter()
198 _type = reader.read("!H")[0]
199 assert(_type == 65535)
200 _length = reader.read("!H")[0]
201 orig_reader = reader
202 reader = orig_reader.slice(_length, 4)
203 obj.experimenter = reader.read("!L")[0]
204 obj.exp_type = reader.read("!L")[0]
205 obj.experimenter_data = str(reader.read_all())
206 return obj
207
208 def __eq__(self, other):
209 if type(self) != type(other): return False
210 if self.experimenter != other.experimenter: return False
211 if self.exp_type != other.exp_type: return False
212 if self.experimenter_data != other.experimenter_data: return False
213 return True
214
215 def pretty_print(self, q):
216 q.text("experimenter {")
217 with q.group():
218 with q.indent(2):
219 q.breakable()
220 q.text("exp_type = ");
221 q.text("%#x" % self.exp_type)
222 q.text(","); q.breakable()
223 q.text("experimenter_data = ");
224 q.pp(self.experimenter_data)
225 q.breakable()
226 q.text('}')
227
228port_stats_prop.subtypes[65535] = experimenter
229
230class optical(port_stats_prop):
231 type = 1
232
233 def __init__(self, flags=None, tx_freq_lmda=None, tx_offset=None, tx_grid_span=None, rx_freq_lmda=None, rx_offset=None, rx_grid_span=None, tx_pwr=None, rx_pwr=None, bias_current=None, temperature=None):
234 if flags != None:
235 self.flags = flags
236 else:
237 self.flags = 0
238 if tx_freq_lmda != None:
239 self.tx_freq_lmda = tx_freq_lmda
240 else:
241 self.tx_freq_lmda = 0
242 if tx_offset != None:
243 self.tx_offset = tx_offset
244 else:
245 self.tx_offset = 0
246 if tx_grid_span != None:
247 self.tx_grid_span = tx_grid_span
248 else:
249 self.tx_grid_span = 0
250 if rx_freq_lmda != None:
251 self.rx_freq_lmda = rx_freq_lmda
252 else:
253 self.rx_freq_lmda = 0
254 if rx_offset != None:
255 self.rx_offset = rx_offset
256 else:
257 self.rx_offset = 0
258 if rx_grid_span != None:
259 self.rx_grid_span = rx_grid_span
260 else:
261 self.rx_grid_span = 0
262 if tx_pwr != None:
263 self.tx_pwr = tx_pwr
264 else:
265 self.tx_pwr = 0
266 if rx_pwr != None:
267 self.rx_pwr = rx_pwr
268 else:
269 self.rx_pwr = 0
270 if bias_current != None:
271 self.bias_current = bias_current
272 else:
273 self.bias_current = 0
274 if temperature != None:
275 self.temperature = temperature
276 else:
277 self.temperature = 0
278 return
279
280 def pack(self):
281 packed = []
282 packed.append(struct.pack("!H", self.type))
283 packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
284 packed.append('\x00' * 4)
285 packed.append(struct.pack("!L", self.flags))
286 packed.append(struct.pack("!L", self.tx_freq_lmda))
287 packed.append(struct.pack("!L", self.tx_offset))
288 packed.append(struct.pack("!L", self.tx_grid_span))
289 packed.append(struct.pack("!L", self.rx_freq_lmda))
290 packed.append(struct.pack("!L", self.rx_offset))
291 packed.append(struct.pack("!L", self.rx_grid_span))
292 packed.append(struct.pack("!H", self.tx_pwr))
293 packed.append(struct.pack("!H", self.rx_pwr))
294 packed.append(struct.pack("!H", self.bias_current))
295 packed.append(struct.pack("!H", self.temperature))
296 length = sum([len(x) for x in packed])
297 packed[1] = struct.pack("!H", length)
298 return ''.join(packed)
299
300 @staticmethod
301 def unpack(reader):
302 obj = optical()
303 _type = reader.read("!H")[0]
304 assert(_type == 1)
305 _length = reader.read("!H")[0]
306 orig_reader = reader
307 reader = orig_reader.slice(_length, 4)
308 reader.skip(4)
309 obj.flags = reader.read("!L")[0]
310 obj.tx_freq_lmda = reader.read("!L")[0]
311 obj.tx_offset = reader.read("!L")[0]
312 obj.tx_grid_span = reader.read("!L")[0]
313 obj.rx_freq_lmda = reader.read("!L")[0]
314 obj.rx_offset = reader.read("!L")[0]
315 obj.rx_grid_span = reader.read("!L")[0]
316 obj.tx_pwr = reader.read("!H")[0]
317 obj.rx_pwr = reader.read("!H")[0]
318 obj.bias_current = reader.read("!H")[0]
319 obj.temperature = reader.read("!H")[0]
320 return obj
321
322 def __eq__(self, other):
323 if type(self) != type(other): return False
324 if self.flags != other.flags: return False
325 if self.tx_freq_lmda != other.tx_freq_lmda: return False
326 if self.tx_offset != other.tx_offset: return False
327 if self.tx_grid_span != other.tx_grid_span: return False
328 if self.rx_freq_lmda != other.rx_freq_lmda: return False
329 if self.rx_offset != other.rx_offset: return False
330 if self.rx_grid_span != other.rx_grid_span: return False
331 if self.tx_pwr != other.tx_pwr: return False
332 if self.rx_pwr != other.rx_pwr: return False
333 if self.bias_current != other.bias_current: return False
334 if self.temperature != other.temperature: return False
335 return True
336
337 def pretty_print(self, q):
338 q.text("optical {")
339 with q.group():
340 with q.indent(2):
341 q.breakable()
342 q.text("flags = ");
343 q.text("%#x" % self.flags)
344 q.text(","); q.breakable()
345 q.text("tx_freq_lmda = ");
346 q.text("%#x" % self.tx_freq_lmda)
347 q.text(","); q.breakable()
348 q.text("tx_offset = ");
349 q.text("%#x" % self.tx_offset)
350 q.text(","); q.breakable()
351 q.text("tx_grid_span = ");
352 q.text("%#x" % self.tx_grid_span)
353 q.text(","); q.breakable()
354 q.text("rx_freq_lmda = ");
355 q.text("%#x" % self.rx_freq_lmda)
356 q.text(","); q.breakable()
357 q.text("rx_offset = ");
358 q.text("%#x" % self.rx_offset)
359 q.text(","); q.breakable()
360 q.text("rx_grid_span = ");
361 q.text("%#x" % self.rx_grid_span)
362 q.text(","); q.breakable()
363 q.text("tx_pwr = ");
364 q.text("%#x" % self.tx_pwr)
365 q.text(","); q.breakable()
366 q.text("rx_pwr = ");
367 q.text("%#x" % self.rx_pwr)
368 q.text(","); q.breakable()
369 q.text("bias_current = ");
370 q.text("%#x" % self.bias_current)
371 q.text(","); q.breakable()
372 q.text("temperature = ");
373 q.text("%#x" % self.temperature)
374 q.breakable()
375 q.text('}')
376
377port_stats_prop.subtypes[1] = optical
378
379