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