|
@@ 383-414 (lines=32) @@
|
| 380 |
|
super().__init__(address) |
| 381 |
|
self.netmask = int(netmask) |
| 382 |
|
|
| 383 |
|
def pack(self, value=None): |
| 384 |
|
"""Pack the value as a binary representation. |
| 385 |
|
|
| 386 |
|
If the value is None the self._value will be used to pack. |
| 387 |
|
|
| 388 |
|
Args: |
| 389 |
|
value (str): IP Address with IPv6 format. |
| 390 |
|
|
| 391 |
|
Returns: |
| 392 |
|
bytes: The binary representation. |
| 393 |
|
|
| 394 |
|
Raises: |
| 395 |
|
struct.error: If the value does not fit the binary format. |
| 396 |
|
|
| 397 |
|
""" |
| 398 |
|
if isinstance(value, type(self)): |
| 399 |
|
return value.pack() |
| 400 |
|
|
| 401 |
|
if value is None: |
| 402 |
|
value = self._value |
| 403 |
|
|
| 404 |
|
if value.find('/') >= 0: |
| 405 |
|
value = value.split('/')[0] |
| 406 |
|
|
| 407 |
|
try: |
| 408 |
|
value = value.split(':') |
| 409 |
|
return struct.pack('!8H', *[int(x, 16) for x in value]) |
| 410 |
|
except struct.error as err: |
| 411 |
|
msg = "IPv6Address error. " |
| 412 |
|
msg += "Class: {}, struct error: {} ".format(type(value).__name__, |
| 413 |
|
err) |
| 414 |
|
raise exceptions.PackException(msg) |
| 415 |
|
|
| 416 |
|
def unpack(self, buff, offset=0): |
| 417 |
|
"""Unpack a binary message into this object's attributes. |
|
@@ 280-311 (lines=32) @@
|
| 277 |
|
super().__init__(address) |
| 278 |
|
self.netmask = int(netmask) |
| 279 |
|
|
| 280 |
|
def pack(self, value=None): |
| 281 |
|
"""Pack the value as a binary representation. |
| 282 |
|
|
| 283 |
|
If the value is None the self._value will be used to pack. |
| 284 |
|
|
| 285 |
|
Args: |
| 286 |
|
value (str): IP Address with ipv4 format. |
| 287 |
|
|
| 288 |
|
Returns: |
| 289 |
|
bytes: The binary representation. |
| 290 |
|
|
| 291 |
|
Raises: |
| 292 |
|
struct.error: If the value does not fit the binary format. |
| 293 |
|
|
| 294 |
|
""" |
| 295 |
|
if isinstance(value, type(self)): |
| 296 |
|
return value.pack() |
| 297 |
|
|
| 298 |
|
if value is None: |
| 299 |
|
value = self._value |
| 300 |
|
|
| 301 |
|
if value.find('/') >= 0: |
| 302 |
|
value = value.split('/')[0] |
| 303 |
|
|
| 304 |
|
try: |
| 305 |
|
value = value.split('.') |
| 306 |
|
return struct.pack('!4B', *[int(x) for x in value]) |
| 307 |
|
except struct.error as err: |
| 308 |
|
msg = "IPAddress error. " |
| 309 |
|
msg += "Class: {}, struct error: {} ".format(type(value).__name__, |
| 310 |
|
err) |
| 311 |
|
raise exceptions.PackException(msg) |
| 312 |
|
|
| 313 |
|
def unpack(self, buff, offset=0): |
| 314 |
|
"""Unpack a binary message into this object's attributes. |
|
@@ 474-504 (lines=31) @@
|
| 471 |
|
""" |
| 472 |
|
super().__init__(hw_address) |
| 473 |
|
|
| 474 |
|
def pack(self, value=None): |
| 475 |
|
"""Pack the value as a binary representation. |
| 476 |
|
|
| 477 |
|
If the passed value (or the self._value) is zero (int), then the pack |
| 478 |
|
will assume that the value to be packed is '00:00:00:00:00:00'. |
| 479 |
|
|
| 480 |
|
Returns |
| 481 |
|
bytes: The binary representation. |
| 482 |
|
|
| 483 |
|
Raises: |
| 484 |
|
struct.error: If the value does not fit the binary format. |
| 485 |
|
|
| 486 |
|
""" |
| 487 |
|
if isinstance(value, type(self)): |
| 488 |
|
return value.pack() |
| 489 |
|
|
| 490 |
|
if value is None: |
| 491 |
|
value = self._value |
| 492 |
|
|
| 493 |
|
if value == 0: |
| 494 |
|
value = '00:00:00:00:00:00' |
| 495 |
|
|
| 496 |
|
value = value.split(':') |
| 497 |
|
|
| 498 |
|
try: |
| 499 |
|
return struct.pack('!6B', *[int(x, 16) for x in value]) |
| 500 |
|
except struct.error as err: |
| 501 |
|
msg = "HWAddress error. " |
| 502 |
|
msg += "Class: {}, struct error: {} ".format(type(value).__name__, |
| 503 |
|
err) |
| 504 |
|
raise exceptions.PackException(msg) |
| 505 |
|
|
| 506 |
|
def unpack(self, buff, offset=0): |
| 507 |
|
"""Unpack a binary message into this object's attributes. |