dnspython  1.16.0
About: dnspython is a DNS toolkit (for Python 2.x) that supports almost all record types.
  Fossies Dox: dnspython-1.16.0.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

ipv4.py
Go to the documentation of this file.
1 # Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
2 
3 # Copyright (C) 2003-2017 Nominum, Inc.
4 #
5 # Permission to use, copy, modify, and distribute this software and its
6 # documentation for any purpose with or without fee is hereby granted,
7 # provided that the above copyright notice and this permission notice
8 # appear in all copies.
9 #
10 # THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
16 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 
18 """IPv4 helper functions."""
19 
20 import struct
21 
22 import dns.exception
23 from ._compat import binary_type
24 
25 def inet_ntoa(address):
26  """Convert an IPv4 address in binary form to text form.
27 
28  *address*, a ``binary``, the IPv4 address in binary form.
29 
30  Returns a ``text``.
31  """
32 
33  if len(address) != 4:
35  if not isinstance(address, bytearray):
36  address = bytearray(address)
37  return ('%u.%u.%u.%u' % (address[0], address[1],
38  address[2], address[3]))
39 
40 def inet_aton(text):
41  """Convert an IPv4 address in text form to binary form.
42 
43  *text*, a ``text``, the IPv4 address in textual form.
44 
45  Returns a ``binary``.
46  """
47 
48  if not isinstance(text, binary_type):
49  text = text.encode()
50  parts = text.split(b'.')
51  if len(parts) != 4:
53  for part in parts:
54  if not part.isdigit():
56  if len(part) > 1 and part[0] == '0':
57  # No leading zeros
59  try:
60  bytes = [int(part) for part in parts]
61  return struct.pack('BBBB', *bytes)
62  except:
dns.exception.SyntaxError
Definition: exception.py:113
dns.ipv4.inet_ntoa
def inet_ntoa(address)
Definition: ipv4.py:25
dns.ipv4.inet_aton
def inet_aton(text)
Definition: ipv4.py:40
dns.exception
Definition: exception.py:1