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

\item 
tuple {\bfseries R\+E\+\_\+\+I\+P4} = re.\+compile(P\+A\+T\+\_\+\+I\+P4+\textquotesingle{}\$\textquotesingle{})\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_ae782c801ad3486a52b1c79ed4da078de}
\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_aa5a95149fb67a0c89d39217246e7815b}
\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}
 