\section{Milter.\-pyip6 Namespace Reference}
\label{namespaceMilter_1_1pyip6}\index{Milter.\-pyip6@{Milter.\-pyip6}}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
def {\bf inet\-\_\-ntop}
\item 
def {\bf inet\-\_\-pton}
\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
string {\bfseries P\-A\-T\-\_\-\-I\-P4} = r'\textbackslash{}.'\label{namespaceMilter_1_1pyip6_ac9aa881587adf8e64d0a474acbe617d0}

\item 
tuple {\bfseries R\-E\-\_\-\-I\-P4} = re.\-compile(P\-A\-T\-\_\-\-I\-P4+'\$')\label{namespaceMilter_1_1pyip6_a3653cbf1711cf9155e4c33cab54b9215}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\begin{DoxyVerb}Pure Python IP6 parsing and formatting

Copyright (c) 2006 Stuart Gathman <stuart@bmsi.com>

This module is free software, and you may redistribute it and/or modify
it under the same terms as Python itself, so long as this copyright message
and disclaimer are retained in their original form.
\end{DoxyVerb}
 

\subsection{Function Documentation}
\index{Milter\-::pyip6@{Milter\-::pyip6}!inet\-\_\-ntop@{inet\-\_\-ntop}}
\index{inet\-\_\-ntop@{inet\-\_\-ntop}!Milter::pyip6@{Milter\-::pyip6}}
\subsubsection[{inet\-\_\-ntop}]{\setlength{\rightskip}{0pt plus 5cm}def Milter.\-pyip6.\-inet\-\_\-ntop (
\begin{DoxyParamCaption}
\item[{}]{s}
\end{DoxyParamCaption}
)}\label{namespaceMilter_1_1pyip6_a3a7272a39e3480920942deac965d7ced}
\begin{DoxyVerb}Convert ip6 address to standard hex notation.

Examples:

>>> inet_ntop(struct.pack("!HHHHHHHH",0,0,0,0,0,0xFFFF,0x0102,0x0304))
'::FFFF:1.2.3.4'

>>> inet_ntop(struct.pack("!HHHHHHHH",0x1234,0x5678,0,0,0,0,0x0102,0x0304))
'1234:5678::102:304'

>>> inet_ntop(struct.pack("!HHHHHHHH",0,0,0,0x1234,0x5678,0,0x0102,0x0304))
'::1234:5678:0:102:304'

>>> inet_ntop(struct.pack("!HHHHHHHH",0x1234,0x5678,0,0x0102,0x0304,0,0,0))
'1234:5678:0:102:304::'

>>> inet_ntop(struct.pack("!HHHHHHHH",0,0,0,0,0,0,0,0))
'::'
\end{DoxyVerb}
 \index{Milter\-::pyip6@{Milter\-::pyip6}!inet\-\_\-pton@{inet\-\_\-pton}}
\index{inet\-\_\-pton@{inet\-\_\-pton}!Milter::pyip6@{Milter\-::pyip6}}
\subsubsection[{inet\-\_\-pton}]{\setlength{\rightskip}{0pt plus 5cm}def Milter.\-pyip6.\-inet\-\_\-pton (
\begin{DoxyParamCaption}
\item[{}]{p}
\end{DoxyParamCaption}
)}\label{namespaceMilter_1_1pyip6_a817ee71a2b212e2b11d5a212c4e03894}
\begin{DoxyVerb}Convert ip6 standard hex notation to ip6 address.

Examples:

>>> struct.unpack('!HHHHHHHH',inet_pton('::'))
(0, 0, 0, 0, 0, 0, 0, 0)

>>> struct.unpack('!HHHHHHHH',inet_pton('::1234'))
(0, 0, 0, 0, 0, 0, 0, 4660)

>>> struct.unpack('!HHHHHHHH',inet_pton('1234::'))
(4660, 0, 0, 0, 0, 0, 0, 0)

>>> struct.unpack('!HHHHHHHH',inet_pton('1234::5678'))
(4660, 0, 0, 0, 0, 0, 0, 22136)

>>> struct.unpack('!HHHHHHHH',inet_pton('::FFFF:1.2.3.4'))
(0, 0, 0, 0, 0, 65535, 258, 772)

>>> struct.unpack('!HHHHHHHH',inet_pton('1.2.3.4'))
(0, 0, 0, 0, 0, 65535, 258, 772)

>>> try: inet_pton('::1.2.3.4.5')
... except ValueError,x: print x
::1.2.3.4.5
\end{DoxyVerb}
 