Package dns :: Module ipv4
[hide private]
[frames] | no frames]

Source Code for Module dns.ipv4

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