xref: /aosp_15_r20/external/libpcap/pcap-sita.html (revision 8b26181f966a6af5cf6981a6f474313de533bb28)
1*8b26181fSAndroid Build Coastguard Worker<HTML><HEAD>
2*8b26181fSAndroid Build Coastguard Worker<STYLE type="text/css">
3*8b26181fSAndroid Build Coastguard Worker<!--
4*8b26181fSAndroid Build Coastguard WorkerA { text-decoration:none }
5*8b26181fSAndroid Build Coastguard Worker-->
6*8b26181fSAndroid Build Coastguard Worker</STYLE>
7*8b26181fSAndroid Build Coastguard Worker</HEAD>
8*8b26181fSAndroid Build Coastguard Worker<BODY>
9*8b26181fSAndroid Build Coastguard Worker
10*8b26181fSAndroid Build Coastguard Worker<TABLE WIDTH=100%><TR>
11*8b26181fSAndroid Build Coastguard Worker	<TD ALIGN=LEFT VALIGN=TOP>
12*8b26181fSAndroid Build Coastguard Worker		<FONT SIZE=+0 FACE="COURIER"><B>A "Distributed Pcap" for<BR>Remote Monitoring LANs & WANs</B><BR>
13*8b26181fSAndroid Build Coastguard Worker										(Design Notes for the SITA ACN device)</FONT>
14*8b26181fSAndroid Build Coastguard Worker	</TD>
15*8b26181fSAndroid Build Coastguard Worker	<TD ALIGN=RIGHT VALIGN=TOP>
16*8b26181fSAndroid Build Coastguard Worker		Fulko Hew<BR>SITA INC Canada, Inc.<BR>Revised: October 2, 2007
17*8b26181fSAndroid Build Coastguard Worker	</TD>
18*8b26181fSAndroid Build Coastguard Worker</TR></TABLE>
19*8b26181fSAndroid Build Coastguard Worker
20*8b26181fSAndroid Build Coastguard Worker
21*8b26181fSAndroid Build Coastguard Worker<H3>SUMMARY</H3>
22*8b26181fSAndroid Build Coastguard Worker<UL>
23*8b26181fSAndroid Build Coastguard Worker	<STRONG>Note:</STRONG> This document is part of the libpcap Git and was derived from 'pcap.3' (circa Aug/07).
24*8b26181fSAndroid Build Coastguard Worker	<P>
25*8b26181fSAndroid Build Coastguard Worker	The ACN provides a customized/distributed version of this library that allows SMPs to
26*8b26181fSAndroid Build Coastguard Worker	interact with the various IOPs within the site providing a standard mechanism
27*8b26181fSAndroid Build Coastguard Worker	to capture LAN and WAN message traffic.
28*8b26181fSAndroid Build Coastguard Worker	<P>
29*8b26181fSAndroid Build Coastguard Worker	<CENTER>
30*8b26181fSAndroid Build Coastguard Worker		<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3 WIDTH=75%>
31*8b26181fSAndroid Build Coastguard Worker			<TR>
32*8b26181fSAndroid Build Coastguard Worker				<TH VALIGN=TOP>SMP</TH>
33*8b26181fSAndroid Build Coastguard Worker				<TD VALIGN=TOP>The Supervisory Management Processor where Wireshark (or equivalent)
34*8b26181fSAndroid Build Coastguard Worker								runs in conjunction with a libpcap front-end.</TD>
35*8b26181fSAndroid Build Coastguard Worker			</TR>
36*8b26181fSAndroid Build Coastguard Worker			<TR>
37*8b26181fSAndroid Build Coastguard Worker				<TH VALIGN=TOP>IOP</TH>
38*8b26181fSAndroid Build Coastguard Worker				<TD VALIGN=TOP>I/O Processors where the monitored ports exist in conjunction
39*8b26181fSAndroid Build Coastguard Worker								with a custom device driver/libpcap back-end.</TD>
40*8b26181fSAndroid Build Coastguard Worker			</TR>
41*8b26181fSAndroid Build Coastguard Worker		</TABLE>
42*8b26181fSAndroid Build Coastguard Worker	</CENTER>
43*8b26181fSAndroid Build Coastguard Worker	<P>
44*8b26181fSAndroid Build Coastguard Worker	Each IOP will be capable of supporting multiple connections from an SMP
45*8b26181fSAndroid Build Coastguard Worker	enabling monitoring of more than one interface at a time, each through
46*8b26181fSAndroid Build Coastguard Worker	its own separate connection.  The IOP is responsible to ensure and report
47*8b26181fSAndroid Build Coastguard Worker	an error if any attempt is made to monitor the same interface more than once.
48*8b26181fSAndroid Build Coastguard Worker	<P>
49*8b26181fSAndroid Build Coastguard Worker	There are three applications that will be supported by the ACN version of libpcap.
50*8b26181fSAndroid Build Coastguard Worker	They each use a slightly different mode for looping/capturing and termination
51*8b26181fSAndroid Build Coastguard Worker	as summarized in the following table:
52*8b26181fSAndroid Build Coastguard Worker	<P>
53*8b26181fSAndroid Build Coastguard Worker	<CENTER>
54*8b26181fSAndroid Build Coastguard Worker	<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
55*8b26181fSAndroid Build Coastguard Worker	<TR><TH>Application</TH>	<TH>Capture</TH>	<TH>Termination</TH></TR>
56*8b26181fSAndroid Build Coastguard Worker	<TR><TH VALIGN=TOP NOWRAP>wireshark</TH>
57*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>pcap_dispatch(all packets in one buffer of capture only)</TD>
58*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>pcap_breakloop()</TD>
59*8b26181fSAndroid Build Coastguard Worker		</TR>
60*8b26181fSAndroid Build Coastguard Worker	<TR><TH VALIGN=TOP NOWRAP>tshark</TH>
61*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>pcap_dispatch(one buffer of capture only)</TD>
62*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Since a CTRL-C was used to terminate the application, pcap_breakloop() is never called.</TD>
63*8b26181fSAndroid Build Coastguard Worker		</TR>
64*8b26181fSAndroid Build Coastguard Worker	<TR><TH VALIGN=TOP NOWRAP>tcpdump</TH>
65*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>pcap_loop(all packets in the next buffer, and loop forever)</TD>
66*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>pcap_breakloop()</TD>
67*8b26181fSAndroid Build Coastguard Worker		</TR>
68*8b26181fSAndroid Build Coastguard Worker	</TABLE>
69*8b26181fSAndroid Build Coastguard Worker	</CENTER>
70*8b26181fSAndroid Build Coastguard Worker	<P>
71*8b26181fSAndroid Build Coastguard Worker	<B>Note: </B>In all cases, the termination of capturing is always (apparently) followed by
72*8b26181fSAndroid Build Coastguard Worker	pcap_close().  Pcap_breakloop() is only used to stop/suspend looping/processing,
73*8b26181fSAndroid Build Coastguard Worker	and upon close interpretation of the function definitions, it is possible to resume
74*8b26181fSAndroid Build Coastguard Worker	capturing following a pcap_breakloop() without any re-initialization.
75*8b26181fSAndroid Build Coastguard Worker	<P>
76*8b26181fSAndroid Build Coastguard Worker	<H4>ACN Limitations</H4>
77*8b26181fSAndroid Build Coastguard Worker	<OL>
78*8b26181fSAndroid Build Coastguard Worker		<LI>Monitoring of backup IOPs is not currently supported.
79*8b26181fSAndroid Build Coastguard Worker		<LI>Ethernet interfaces cannot be monitored in promiscuous mode.
80*8b26181fSAndroid Build Coastguard Worker	</OL>
81*8b26181fSAndroid Build Coastguard Worker
82*8b26181fSAndroid Build Coastguard Worker</UL>
83*8b26181fSAndroid Build Coastguard Worker
84*8b26181fSAndroid Build Coastguard Worker<H3>ROUTINES</H3>
85*8b26181fSAndroid Build Coastguard Worker<UL>
86*8b26181fSAndroid Build Coastguard Worker		The following list of functions is the sub-set of Pcap functions that have been
87*8b26181fSAndroid Build Coastguard Worker		altered/enhanced to support the ACN remote monitoring facility.  The remainder of the Pcap
88*8b26181fSAndroid Build Coastguard Worker		functions continue to perform their duties un-altered.  Libpcap only supports this
89*8b26181fSAndroid Build Coastguard Worker		mode of operation if it has been configured/compiled for SITA/ACN support.
90*8b26181fSAndroid Build Coastguard Worker		<P>
91*8b26181fSAndroid Build Coastguard Worker		<UL><FONT FACE=COURIER>
92*8b26181fSAndroid Build Coastguard Worker			pcap_findalldevs<BR>
93*8b26181fSAndroid Build Coastguard Worker			pcap_freealldevs<BR>
94*8b26181fSAndroid Build Coastguard Worker			pcap_open_live<BR>
95*8b26181fSAndroid Build Coastguard Worker			pcap_close<BR>
96*8b26181fSAndroid Build Coastguard Worker			pcap_setfilter<BR>
97*8b26181fSAndroid Build Coastguard Worker			pcap_dispatch<BR>
98*8b26181fSAndroid Build Coastguard Worker			pcap_loop<BR>
99*8b26181fSAndroid Build Coastguard Worker			pcap_next<BR>
100*8b26181fSAndroid Build Coastguard Worker			pcap_next_ex<BR>
101*8b26181fSAndroid Build Coastguard Worker			pcap_stats<BR>
102*8b26181fSAndroid Build Coastguard Worker		</FONT></UL>
103*8b26181fSAndroid Build Coastguard Worker
104*8b26181fSAndroid Build Coastguard Worker	These subroutines have been modified for the ACN specific distributed and remote monitoring
105*8b26181fSAndroid Build Coastguard Worker	ability perform the following basic functions.  More detail is provided in the
106*8b26181fSAndroid Build Coastguard Worker	"SMP/IOP Inter-Process Communication Protocol" section.
107*8b26181fSAndroid Build Coastguard Worker	<P>
108*8b26181fSAndroid Build Coastguard Worker<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
109*8b26181fSAndroid Build Coastguard Worker	<TR>
110*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_open_live()</B></TD>
111*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP>Used to obtain a packet capture descriptor to look at packets on the network.</TD>
112*8b26181fSAndroid Build Coastguard Worker	</TR>
113*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
114*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
115*8b26181fSAndroid Build Coastguard Worker			<TD>
116*8b26181fSAndroid Build Coastguard Worker			The SMP will open a connection to the selected IOP on its 'sniffer' port
117*8b26181fSAndroid Build Coastguard Worker			to ensure it is available.  It sends a null terminated string identifying
118*8b26181fSAndroid Build Coastguard Worker			the interface to be monitored.
119*8b26181fSAndroid Build Coastguard Worker			</TD>
120*8b26181fSAndroid Build Coastguard Worker		</TR>
121*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
122*8b26181fSAndroid Build Coastguard Worker			<TD>
123*8b26181fSAndroid Build Coastguard Worker			After any required processing is complete, the IOP will return a
124*8b26181fSAndroid Build Coastguard Worker			null terminated string containing an error message if one occurred.
125*8b26181fSAndroid Build Coastguard Worker			If no error occurred, a empty string is still returned.
126*8b26181fSAndroid Build Coastguard Worker			Errors are:
127*8b26181fSAndroid Build Coastguard Worker			<UL>
128*8b26181fSAndroid Build Coastguard Worker			<LI>"Interface (xxx) does not exist."
129*8b26181fSAndroid Build Coastguard Worker			<LI>"Interface (xxx) not configured."
130*8b26181fSAndroid Build Coastguard Worker			<LI>"Interface (xxx) already being monitored."
131*8b26181fSAndroid Build Coastguard Worker			</UL>
132*8b26181fSAndroid Build Coastguard Worker			</TD>
133*8b26181fSAndroid Build Coastguard Worker		</TR>
134*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
135*8b26181fSAndroid Build Coastguard Worker
136*8b26181fSAndroid Build Coastguard Worker	<TR>
137*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_findalldevs()</B></TD>
138*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP>It constructs a list of network devices that can be opened with pcap_open_live().</TD>
139*8b26181fSAndroid Build Coastguard Worker	</TR>
140*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
141*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
142*8b26181fSAndroid Build Coastguard Worker			<TD>
143*8b26181fSAndroid Build Coastguard Worker			It obtains a list of IOPs currently available (via /etc/hosts).
144*8b26181fSAndroid Build Coastguard Worker			</TD>
145*8b26181fSAndroid Build Coastguard Worker		</TR>
146*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
147*8b26181fSAndroid Build Coastguard Worker			<TD>
148*8b26181fSAndroid Build Coastguard Worker			The SMP will sequentially open a connection to each IOP on its 'sniffer' port to ensure
149*8b26181fSAndroid Build Coastguard Worker			the IOP is available.
150*8b26181fSAndroid Build Coastguard Worker			It sends a null terminated empty interface ID followed by the query request command.
151*8b26181fSAndroid Build Coastguard Worker			</TD>
152*8b26181fSAndroid Build Coastguard Worker		</TR>
153*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
154*8b26181fSAndroid Build Coastguard Worker			<TD>The IOP returns an error response and its list of devices.
155*8b26181fSAndroid Build Coastguard Worker			</TD>
156*8b26181fSAndroid Build Coastguard Worker		</TR>
157*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
158*8b26181fSAndroid Build Coastguard Worker			<TD>
159*8b26181fSAndroid Build Coastguard Worker			The SMP closes the TCP connection with each IOP.
160*8b26181fSAndroid Build Coastguard Worker			</TD>
161*8b26181fSAndroid Build Coastguard Worker		</TR>
162*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
163*8b26181fSAndroid Build Coastguard Worker			<TD>
164*8b26181fSAndroid Build Coastguard Worker			The SMP adds the received information to its internal structure.
165*8b26181fSAndroid Build Coastguard Worker			</TD>
166*8b26181fSAndroid Build Coastguard Worker		</TR>
167*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
168*8b26181fSAndroid Build Coastguard Worker
169*8b26181fSAndroid Build Coastguard Worker	<TR>
170*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_freealldevs()</B></TD>
171*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP>Used to free a list allocated by pcap_findalldevs().</TD>
172*8b26181fSAndroid Build Coastguard Worker	</TR>
173*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
174*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
175*8b26181fSAndroid Build Coastguard Worker			<TD>
176*8b26181fSAndroid Build Coastguard Worker			The SMP frees the structure it built as a result of the previous
177*8b26181fSAndroid Build Coastguard Worker			invocation of pcap_findalldevs().
178*8b26181fSAndroid Build Coastguard Worker			</TD>
179*8b26181fSAndroid Build Coastguard Worker		</TR>
180*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
181*8b26181fSAndroid Build Coastguard Worker
182*8b26181fSAndroid Build Coastguard Worker	<TR>
183*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_dispatch()</B></TD>
184*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP>Used to collect and process packets.</TD>
185*8b26181fSAndroid Build Coastguard Worker	</TR>
186*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
187*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
188*8b26181fSAndroid Build Coastguard Worker			<TD>
189*8b26181fSAndroid Build Coastguard Worker			On the first invocation of pcap_dispatch(), pcap_loop(), or pcap_next(), or pcap_next_ex() following a pcap_open_live(),
190*8b26181fSAndroid Build Coastguard Worker			the SMP will pass down the monitor start command and various parameters the IOP should use.
191*8b26181fSAndroid Build Coastguard Worker			</TD>
192*8b26181fSAndroid Build Coastguard Worker		</TR>
193*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
194*8b26181fSAndroid Build Coastguard Worker			<TD>
195*8b26181fSAndroid Build Coastguard Worker			The IOP now sends a stream of captured data.
196*8b26181fSAndroid Build Coastguard Worker			</TD>
197*8b26181fSAndroid Build Coastguard Worker		</TR>
198*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
199*8b26181fSAndroid Build Coastguard Worker			<TD>
200*8b26181fSAndroid Build Coastguard Worker			The SMP will read the reverse channel of the connection between the SMP and the
201*8b26181fSAndroid Build Coastguard Worker			IOP that provides the captured data (via 'p->read_op' which is 'pcap_read_linux()'
202*8b26181fSAndroid Build Coastguard Worker			until the select() call returns a 'no more data' indication.
203*8b26181fSAndroid Build Coastguard Worker			It will the process (at most) the next 'cnt' packets and invoke the specified
204*8b26181fSAndroid Build Coastguard Worker			callback function for each packet processed.
205*8b26181fSAndroid Build Coastguard Worker			</TD>
206*8b26181fSAndroid Build Coastguard Worker		</TR>
207*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP</TH>
208*8b26181fSAndroid Build Coastguard Worker			<TD>
209*8b26181fSAndroid Build Coastguard Worker			The IOP continues to listen for additional commands as well as capturing and forwarding data to the SMP.
210*8b26181fSAndroid Build Coastguard Worker			</TD>
211*8b26181fSAndroid Build Coastguard Worker		</TR>
212*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
213*8b26181fSAndroid Build Coastguard Worker
214*8b26181fSAndroid Build Coastguard Worker	<TR>
215*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_loop()</B></TD>
216*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP>
217*8b26181fSAndroid Build Coastguard Worker				Is similar to pcap_dispatch() except it keeps reading packets until
218*8b26181fSAndroid Build Coastguard Worker				the requested number of packets are processed or an error occurs.
219*8b26181fSAndroid Build Coastguard Worker		</TD>
220*8b26181fSAndroid Build Coastguard Worker	</TR>
221*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
222*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
223*8b26181fSAndroid Build Coastguard Worker			<TD>
224*8b26181fSAndroid Build Coastguard Worker			On the first invocation of pcap_dispatch(), pcap_loop(), or pcap_next(), or pcap_next_ex() following a pcap_open_live(),
225*8b26181fSAndroid Build Coastguard Worker			the SMP will pass down the monitor start command and various parameters the IOP should use.
226*8b26181fSAndroid Build Coastguard Worker			</TD>
227*8b26181fSAndroid Build Coastguard Worker		</TR>
228*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
229*8b26181fSAndroid Build Coastguard Worker			<TD>
230*8b26181fSAndroid Build Coastguard Worker			The IOP now sends a stream of captured data.
231*8b26181fSAndroid Build Coastguard Worker			</TD>
232*8b26181fSAndroid Build Coastguard Worker		</TR>
233*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
234*8b26181fSAndroid Build Coastguard Worker			<TD>
235*8b26181fSAndroid Build Coastguard Worker			The SMP continuously reads the next packet from the reverse channel of the connection
236*8b26181fSAndroid Build Coastguard Worker			between the SMP and the IOP that provides the captured data (via 'p->read_op'
237*8b26181fSAndroid Build Coastguard Worker			which is 'pcap_read_linux()' until 'cnt' packets have been received.
238*8b26181fSAndroid Build Coastguard Worker			The specified callback function will be invoked for each packet received.
239*8b26181fSAndroid Build Coastguard Worker			</TD>
240*8b26181fSAndroid Build Coastguard Worker		</TR>
241*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP</TH>
242*8b26181fSAndroid Build Coastguard Worker			<TD>
243*8b26181fSAndroid Build Coastguard Worker			The IOP continues to listen for additional commands as well as capturing and forwarding data to the SMP.
244*8b26181fSAndroid Build Coastguard Worker			</TD>
245*8b26181fSAndroid Build Coastguard Worker		</TR>
246*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
247*8b26181fSAndroid Build Coastguard Worker
248*8b26181fSAndroid Build Coastguard Worker	<TR>
249*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_next()</B></TD>
250*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP>
251*8b26181fSAndroid Build Coastguard Worker			It reads the next packet (by calling pcap_dispatch() with a count of 1)
252*8b26181fSAndroid Build Coastguard Worker			and returns a pointer to the data in that packet.
253*8b26181fSAndroid Build Coastguard Worker		</TD>
254*8b26181fSAndroid Build Coastguard Worker	</TR>
255*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
256*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
257*8b26181fSAndroid Build Coastguard Worker			<TD>
258*8b26181fSAndroid Build Coastguard Worker			On the first invocation of pcap_dispatch(), pcap_loop(), or pcap_next(), or pcap_next_ex() following a pcap_open_live(),
259*8b26181fSAndroid Build Coastguard Worker			the SMP will pass down the monitor start command and various parameters the IOP should use.
260*8b26181fSAndroid Build Coastguard Worker			</TD>
261*8b26181fSAndroid Build Coastguard Worker		</TR>
262*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
263*8b26181fSAndroid Build Coastguard Worker			<TD>
264*8b26181fSAndroid Build Coastguard Worker			The IOP now sends a stream of captured data.
265*8b26181fSAndroid Build Coastguard Worker			</TD>
266*8b26181fSAndroid Build Coastguard Worker		</TR>
267*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
268*8b26181fSAndroid Build Coastguard Worker			<TD>
269*8b26181fSAndroid Build Coastguard Worker			The SMP reads only the next packet from the reverse channel of the connection
270*8b26181fSAndroid Build Coastguard Worker			between the SMP and the IOP that provides the captured data (via calling pcap_dispatch()
271*8b26181fSAndroid Build Coastguard Worker			with a count of 1) and returns a pointer to that data by invoking an internal callback.
272*8b26181fSAndroid Build Coastguard Worker			</TD>
273*8b26181fSAndroid Build Coastguard Worker		</TR>
274*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP</TH>
275*8b26181fSAndroid Build Coastguard Worker			<TD>
276*8b26181fSAndroid Build Coastguard Worker			The IOP continues to listen for additional commands as well as capturing and forwarding data to the SMP.
277*8b26181fSAndroid Build Coastguard Worker			</TD>
278*8b26181fSAndroid Build Coastguard Worker		</TR>
279*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
280*8b26181fSAndroid Build Coastguard Worker
281*8b26181fSAndroid Build Coastguard Worker	<TR>
282*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_next_ex()</B></TD>
283*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP>Reads the next packet and returns a success/failure indication.</TD>
284*8b26181fSAndroid Build Coastguard Worker	</TR>
285*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
286*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
287*8b26181fSAndroid Build Coastguard Worker			<TD>
288*8b26181fSAndroid Build Coastguard Worker			On the first invocation of pcap_dispatch(), pcap_loop(), or pcap_next(), or pcap_next_ex() following a pcap_open_live(),
289*8b26181fSAndroid Build Coastguard Worker			the SMP will pass down the monitor start command and various parameters the IOP should use.
290*8b26181fSAndroid Build Coastguard Worker			</TD>
291*8b26181fSAndroid Build Coastguard Worker		</TR>
292*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
293*8b26181fSAndroid Build Coastguard Worker			<TD>
294*8b26181fSAndroid Build Coastguard Worker			The IOP now sends a stream of captured data.
295*8b26181fSAndroid Build Coastguard Worker			</TD>
296*8b26181fSAndroid Build Coastguard Worker		</TR>
297*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
298*8b26181fSAndroid Build Coastguard Worker			<TD>
299*8b26181fSAndroid Build Coastguard Worker			The SMP reads only the next packet from the reverse channel of the connection
300*8b26181fSAndroid Build Coastguard Worker			between the SMP and the IOP that provides the captured data (via calling pcap_dispatch()
301*8b26181fSAndroid Build Coastguard Worker			with a count of 1) and returns separate pointers to both the
302*8b26181fSAndroid Build Coastguard Worker			packet header and packet data by invoking an internal callback.
303*8b26181fSAndroid Build Coastguard Worker			</TD>
304*8b26181fSAndroid Build Coastguard Worker		</TR>
305*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP</TH>
306*8b26181fSAndroid Build Coastguard Worker			<TD>
307*8b26181fSAndroid Build Coastguard Worker			The IOP continues to listen for additional commands as well as capturing and forwarding data to the SMP.
308*8b26181fSAndroid Build Coastguard Worker			</TD>
309*8b26181fSAndroid Build Coastguard Worker		</TR>
310*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
311*8b26181fSAndroid Build Coastguard Worker
312*8b26181fSAndroid Build Coastguard Worker	<TR>
313*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_setfilter()</B></TD>
314*8b26181fSAndroid Build Coastguard Worker        <TD VALIGN=TOP>Used to specify a filter program.</TD>
315*8b26181fSAndroid Build Coastguard Worker	</TR>
316*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
317*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
318*8b26181fSAndroid Build Coastguard Worker			<TD>
319*8b26181fSAndroid Build Coastguard Worker			The SMP sends a 'set filter' command followed by the BPF commands.
320*8b26181fSAndroid Build Coastguard Worker			</TD>
321*8b26181fSAndroid Build Coastguard Worker		</TR>
322*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
323*8b26181fSAndroid Build Coastguard Worker			<TD>
324*8b26181fSAndroid Build Coastguard Worker			The IOP returns a null terminated error string if it failed to accept the filter.
325*8b26181fSAndroid Build Coastguard Worker			If no error occurred, then a NULL terminated empty string is returned instead.
326*8b26181fSAndroid Build Coastguard Worker			Errors are:
327*8b26181fSAndroid Build Coastguard Worker			<UL>
328*8b26181fSAndroid Build Coastguard Worker			<LI>"Invalid BPF."
329*8b26181fSAndroid Build Coastguard Worker			<LI>"Insufficient resources for BPF."
330*8b26181fSAndroid Build Coastguard Worker			</UL>
331*8b26181fSAndroid Build Coastguard Worker			</TD>
332*8b26181fSAndroid Build Coastguard Worker		</TR>
333*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
334*8b26181fSAndroid Build Coastguard Worker
335*8b26181fSAndroid Build Coastguard Worker	<TR>
336*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_stats()</B></TD>
337*8b26181fSAndroid Build Coastguard Worker        <TD VALIGN=TOP>Fills in a pcap_stat struct with packet statistics.</TD>
338*8b26181fSAndroid Build Coastguard Worker	</TR>
339*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
340*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
341*8b26181fSAndroid Build Coastguard Worker			<TD>
342*8b26181fSAndroid Build Coastguard Worker			The SMP sends a message to the IOP requesting its statistics.
343*8b26181fSAndroid Build Coastguard Worker			</TD>
344*8b26181fSAndroid Build Coastguard Worker		</TR>
345*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP -> SMP</TH>
346*8b26181fSAndroid Build Coastguard Worker			<TD>
347*8b26181fSAndroid Build Coastguard Worker			The IOP returns the statistics.
348*8b26181fSAndroid Build Coastguard Worker			</TD>
349*8b26181fSAndroid Build Coastguard Worker		</TR>
350*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP</TH>
351*8b26181fSAndroid Build Coastguard Worker			<TD>
352*8b26181fSAndroid Build Coastguard Worker			The SMP fills in the structure provided with the information retrieved from the IOP.
353*8b26181fSAndroid Build Coastguard Worker			</TD>
354*8b26181fSAndroid Build Coastguard Worker		</TR>
355*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
356*8b26181fSAndroid Build Coastguard Worker
357*8b26181fSAndroid Build Coastguard Worker	<TR>
358*8b26181fSAndroid Build Coastguard Worker		<TD VALIGN=TOP ROWSPAN=2><B>pcap_close()</B></TD>
359*8b26181fSAndroid Build Coastguard Worker        <TD VALIGN=TOP>Closes the file and deallocates resources.</TD>
360*8b26181fSAndroid Build Coastguard Worker	</TR>
361*8b26181fSAndroid Build Coastguard Worker	<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
362*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>SMP -> IOP</TH>
363*8b26181fSAndroid Build Coastguard Worker			<TD>
364*8b26181fSAndroid Build Coastguard Worker			The SMP closes the file descriptor, and if the descriptor is that of
365*8b26181fSAndroid Build Coastguard Worker			the communication session with an IOP, it too is terminated.
366*8b26181fSAndroid Build Coastguard Worker			</TD>
367*8b26181fSAndroid Build Coastguard Worker		</TR>
368*8b26181fSAndroid Build Coastguard Worker		<TR><TH VALIGN=TOP NOWRAP>IOP</TH>
369*8b26181fSAndroid Build Coastguard Worker			<TD>
370*8b26181fSAndroid Build Coastguard Worker			If the IOP detects that its communication session with an SMP
371*8b26181fSAndroid Build Coastguard Worker			has closed, it will terminate any monitoring in progress,
372*8b26181fSAndroid Build Coastguard Worker			release any resources and close its end of the session.
373*8b26181fSAndroid Build Coastguard Worker			It will not maintain persistence of any information or prior mode of operation.
374*8b26181fSAndroid Build Coastguard Worker			</TD>
375*8b26181fSAndroid Build Coastguard Worker		</TR>
376*8b26181fSAndroid Build Coastguard Worker	</TABLE></TD></TR>
377*8b26181fSAndroid Build Coastguard Worker</TABLE>
378*8b26181fSAndroid Build Coastguard Worker</UL>
379*8b26181fSAndroid Build Coastguard Worker
380*8b26181fSAndroid Build Coastguard Worker<P>
381*8b26181fSAndroid Build Coastguard Worker<H3>SMP/IOP Inter-Process Communication Protocol</H3>
382*8b26181fSAndroid Build Coastguard Worker
383*8b26181fSAndroid Build Coastguard Worker<UL>
384*8b26181fSAndroid Build Coastguard Worker	<LI><P>Communications between an SMP and an IOP consists of a TCP session
385*8b26181fSAndroid Build Coastguard Worker			between an ephemeral port on the SMP and the well known port of 49152
386*8b26181fSAndroid Build Coastguard Worker			(which is the first available port in the 'dynamic and/or private port'
387*8b26181fSAndroid Build Coastguard Worker			range) on an IOP.
388*8b26181fSAndroid Build Coastguard Worker	<LI><P>Following a TCP open operation the IOP receives a null terminated
389*8b26181fSAndroid Build Coastguard Worker			'interface ID' string to determine the type of operation that follows:
390*8b26181fSAndroid Build Coastguard Worker	<LI><P>Every command received by an IOP implies a 'stop trace/stop forwarding' operation must
391*8b26181fSAndroid Build Coastguard Worker			occur before executing the received command.
392*8b26181fSAndroid Build Coastguard Worker	<LI><P>A session is closed when the SMP closes the TCP session with the IOP.
393*8b26181fSAndroid Build Coastguard Worker			Obviously monitoring and forwarding is also stopped at that time.
394*8b26181fSAndroid Build Coastguard Worker
395*8b26181fSAndroid Build Coastguard Worker	<B>Note: </B>All multi-octet entities are sent in network neutral order.
396*8b26181fSAndroid Build Coastguard Worker	<P>
397*8b26181fSAndroid Build Coastguard Worker
398*8b26181fSAndroid Build Coastguard Worker	<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5>
399*8b26181fSAndroid Build Coastguard Worker		<TR><TH COLSPAN=3><HR WIDTH=100%></TH></TR>
400*8b26181fSAndroid Build Coastguard Worker		<TR>
401*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ROWSPAN=6>pcap_findalldevs()</TD>
402*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
403*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Open socket (to each IOP), and sends:
404*8b26181fSAndroid Build Coastguard Worker				<P>
405*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
406*8b26181fSAndroid Build Coastguard Worker					<TR>
407*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
408*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
409*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
410*8b26181fSAndroid Build Coastguard Worker					</TR>
411*8b26181fSAndroid Build Coastguard Worker					<TR>
412*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>Interface ID</TD>
413*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
414*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>A NULL to indicate an empty 'interface ID'.</TD>
415*8b26181fSAndroid Build Coastguard Worker					</TR>
416*8b26181fSAndroid Build Coastguard Worker				</TABLE>
417*8b26181fSAndroid Build Coastguard Worker			</TD>
418*8b26181fSAndroid Build Coastguard Worker		</TR>
419*8b26181fSAndroid Build Coastguard Worker		<TR>
420*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>IOP -> SMP</TD>
421*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Send its (possibly empty) NULL terminated error response string.</TD>
422*8b26181fSAndroid Build Coastguard Worker		</TR>
423*8b26181fSAndroid Build Coastguard Worker		<TR>
424*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
425*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Sends the 'interface query request':
426*8b26181fSAndroid Build Coastguard Worker				<P>
427*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
428*8b26181fSAndroid Build Coastguard Worker					<TR>
429*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
430*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
431*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
432*8b26181fSAndroid Build Coastguard Worker					</TR>
433*8b26181fSAndroid Build Coastguard Worker					<TR>
434*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>Interface ID</TD>
435*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
436*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>A 'Q' (indicating 'interface query request').</TD>
437*8b26181fSAndroid Build Coastguard Worker					</TR>
438*8b26181fSAndroid Build Coastguard Worker				</TABLE>
439*8b26181fSAndroid Build Coastguard Worker			</TD>
440*8b26181fSAndroid Build Coastguard Worker		</TR>
441*8b26181fSAndroid Build Coastguard Worker		<TR>
442*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>IOP -> SMP</TD>
443*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>The IOP returns a list of sequences of information as
444*8b26181fSAndroid Build Coastguard Worker				defined by the return parameter of this function call (as shown in the following table).
445*8b26181fSAndroid Build Coastguard Worker				Elements are specified by providing an unsigned byte preceding the actual data that contains length information.
446*8b26181fSAndroid Build Coastguard Worker				<P>
447*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
448*8b26181fSAndroid Build Coastguard Worker				<TR>
449*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Notes:</TH>
450*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
451*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
452*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
453*8b26181fSAndroid Build Coastguard Worker				</TR>
454*8b26181fSAndroid Build Coastguard Worker				<TR>
455*8b26181fSAndroid Build Coastguard Worker					<TD ROWSPAN=7>&nbsp;</TD>
456*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=RIGHT>length</TD>
457*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
458*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The number of octets in the name field that follows.</TD>
459*8b26181fSAndroid Build Coastguard Worker				</TR>
460*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Name</TD>
461*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1-255</TD>
462*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The name of the interface. The format of the name is an alphabetic string (indicating
463*8b26181fSAndroid Build Coastguard Worker									the type of interface) followed by an optional numeric string (indicating the interface's
464*8b26181fSAndroid Build Coastguard Worker									sequence number).
465*8b26181fSAndroid Build Coastguard Worker									Sequence numbers (if needed) will begin at zero and progress monotonically upwards.
466*8b26181fSAndroid Build Coastguard Worker									(i.e. 'eth0', 'lo', 'wan0', etc.)
467*8b26181fSAndroid Build Coastguard Worker									<P>
468*8b26181fSAndroid Build Coastguard Worker									For an IOP, the alphabetic string will be one of: 'eth', 'wan', and 'lo'
469*8b26181fSAndroid Build Coastguard Worker									for Ethernet, WAN ports and the IP loopback device respectively.
470*8b26181fSAndroid Build Coastguard Worker									An IOP currently supports: 'eth0', 'eth1', 'lo', 'wan0' ... 'wan7'.
471*8b26181fSAndroid Build Coastguard Worker									<P>
472*8b26181fSAndroid Build Coastguard Worker						<B>Note:</B> IOPs and ACNs will not currently support the concept of 'any' interface.</TD>
473*8b26181fSAndroid Build Coastguard Worker				</TR>
474*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=RIGHT>length</TD>
475*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
476*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The number of octets in the interface description field that follows.</TD>
477*8b26181fSAndroid Build Coastguard Worker				</TR>
478*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Interface Description</TD>
479*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>0-255</TD>
480*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>A description of the interface or it may be an empty string. (i.e. 'ALC')</TD>
481*8b26181fSAndroid Build Coastguard Worker				</TR>
482*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Interface Type</TD>
483*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>4</TD>
484*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The type of interface as defined in the description for pcap_datalink() (in network neutral order).</TD>
485*8b26181fSAndroid Build Coastguard Worker				</TR>
486*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Loopback Flag</TD>
487*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
488*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>1 = if the interface is a loopback interface, zero = otherwise.</TD>
489*8b26181fSAndroid Build Coastguard Worker				</TR>
490*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=RIGHT>count</TD>
491*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
492*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP># of address entries that follow.
493*8b26181fSAndroid Build Coastguard Worker						Each entry is a series of bytes in network neutral order.
494*8b26181fSAndroid Build Coastguard Worker						See the parameter definition above for more details.</TD>
495*8b26181fSAndroid Build Coastguard Worker				</TR>
496*8b26181fSAndroid Build Coastguard Worker				<TR>
497*8b26181fSAndroid Build Coastguard Worker					<TD ALIGN=CENTER ROWSPAN=8 WIDTH=1%>Repeated 'count' number of times.</TD>
498*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=RIGHT>length</TD>
499*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
500*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The number of octets in the address field that follows.</TD>
501*8b26181fSAndroid Build Coastguard Worker				</TR>
502*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Address</TD>
503*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1-255</TD>
504*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The address of this interface (in network neutral order).</TD>
505*8b26181fSAndroid Build Coastguard Worker				</TR>
506*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=RIGHT>length</TD>
507*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
508*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The number of octets in the netmask field that follows.</TD>
509*8b26181fSAndroid Build Coastguard Worker				</TR>
510*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Network Mask</TD>
511*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>0-255</TD>
512*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The network mask used on this interface (if applicable) (in network neutral order).</TD>
513*8b26181fSAndroid Build Coastguard Worker				</TR>
514*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=RIGHT>length</TD>
515*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
516*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The number of octets in the broadcast address field that follows.</TD>
517*8b26181fSAndroid Build Coastguard Worker				</TR>
518*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Broadcast Address</TD>
519*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>0-255</TD>
520*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The broadcast address of this interface (if applicable) (in network neutral order).</TD>
521*8b26181fSAndroid Build Coastguard Worker				</TR>
522*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=RIGHT>length</TD>
523*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>1</TD>
524*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The number of octets in the destination address field that follows.</TD>
525*8b26181fSAndroid Build Coastguard Worker				</TR>
526*8b26181fSAndroid Build Coastguard Worker				<TR><TD VALIGN=TOP ALIGN=LEFT>Destination Address</TD>
527*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP ALIGN=CENTER>0-255</TD>
528*8b26181fSAndroid Build Coastguard Worker					<TD VALIGN=TOP>The destination address of this interface (if applicable) (in network neutral order).</TD>
529*8b26181fSAndroid Build Coastguard Worker				</TR>
530*8b26181fSAndroid Build Coastguard Worker				</TABLE>
531*8b26181fSAndroid Build Coastguard Worker		</TR>
532*8b26181fSAndroid Build Coastguard Worker		<TR>
533*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
534*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Close the socket.</TD>
535*8b26181fSAndroid Build Coastguard Worker		</TR>
536*8b26181fSAndroid Build Coastguard Worker		<TR>
537*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>IOP -> SMP</TD>
538*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Close the socket.</TD>
539*8b26181fSAndroid Build Coastguard Worker		</TR>
540*8b26181fSAndroid Build Coastguard Worker		<TR><TH COLSPAN=3><HR WIDTH=100%></TH></TR>
541*8b26181fSAndroid Build Coastguard Worker		<TR>
542*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ROWSPAN=2>pcap_open_live()</TD>
543*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
544*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Open socket, and sends:
545*8b26181fSAndroid Build Coastguard Worker				<P>
546*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
547*8b26181fSAndroid Build Coastguard Worker					<TR>
548*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
549*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
550*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
551*8b26181fSAndroid Build Coastguard Worker					</TR>
552*8b26181fSAndroid Build Coastguard Worker					<TR>
553*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>Interface ID</TD>
554*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>'n'</TD>
555*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>'n' octets containing a NULL terminated interface name string.</TD>
556*8b26181fSAndroid Build Coastguard Worker					</TR>
557*8b26181fSAndroid Build Coastguard Worker				</TABLE>
558*8b26181fSAndroid Build Coastguard Worker			</TD>
559*8b26181fSAndroid Build Coastguard Worker		</TR>
560*8b26181fSAndroid Build Coastguard Worker		<TR>
561*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>IOP -> SMP</TD>
562*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Send its NULL terminated error response string.</TD>
563*8b26181fSAndroid Build Coastguard Worker		</TR>
564*8b26181fSAndroid Build Coastguard Worker		<TR><TH COLSPAN=3><HR WIDTH=100%></TH></TR>
565*8b26181fSAndroid Build Coastguard Worker		<TR>
566*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP NOWRAP ROWSPAN=2>pcap_dispatch()<BR>pcap_loop()<BR>pcap_next()<BR>pcap_next_ex()</TD>
567*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
568*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>On the first invocation following a pcap_open_live() or pcap_breakloop() additional information is sent:
569*8b26181fSAndroid Build Coastguard Worker				<P>
570*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
571*8b26181fSAndroid Build Coastguard Worker					<TR>
572*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
573*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
574*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
575*8b26181fSAndroid Build Coastguard Worker					</TR>
576*8b26181fSAndroid Build Coastguard Worker					<TR>
577*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>command</TD>
578*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
579*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>'M' (indicating 'monitor start')</TD>
580*8b26181fSAndroid Build Coastguard Worker					</TR>
581*8b26181fSAndroid Build Coastguard Worker					<TR>
582*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>snaplen</TD>
583*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>4</TD>
584*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>snaplen</TD>
585*8b26181fSAndroid Build Coastguard Worker					</TR>
586*8b26181fSAndroid Build Coastguard Worker					<TR>
587*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>timeout</TD>
588*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
589*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>timeout value (in milliseconds)</TD>
590*8b26181fSAndroid Build Coastguard Worker					</TR>
591*8b26181fSAndroid Build Coastguard Worker					<TR>
592*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>promiscuous</TD>
593*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
594*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>A flag indicating that the interface being monitored show operate
595*8b26181fSAndroid Build Coastguard Worker							in promiscuous mode. [off(0) / on(NZ)]</TD>
596*8b26181fSAndroid Build Coastguard Worker					</TR>
597*8b26181fSAndroid Build Coastguard Worker					<TR>
598*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>direction</TD>
599*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
600*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>A flag indicating the direction of traffic that should be captuted [both(0) / in(1) / out(2)]</TD>
601*8b26181fSAndroid Build Coastguard Worker					</TR>
602*8b26181fSAndroid Build Coastguard Worker				</TABLE>
603*8b26181fSAndroid Build Coastguard Worker			</TD>
604*8b26181fSAndroid Build Coastguard Worker		</TR>
605*8b26181fSAndroid Build Coastguard Worker		<TR>
606*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>IOP -> SMP</TD>
607*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>Sends captured packets.</TD>
608*8b26181fSAndroid Build Coastguard Worker		</TR>
609*8b26181fSAndroid Build Coastguard Worker		<TR><TH COLSPAN=3><HR WIDTH=100%></TH></TR>
610*8b26181fSAndroid Build Coastguard Worker		<TR>
611*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ROWSPAN=2>pcap_setfilter()</TD>
612*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
613*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>At any time, the SMP can issue a set filter command which contains
614*8b26181fSAndroid Build Coastguard Worker							an indicator, a count of the number of statements in the filter,
615*8b26181fSAndroid Build Coastguard Worker							followed by the sequence of filter commands represented as a sequence
616*8b26181fSAndroid Build Coastguard Worker							of C-style structures.
617*8b26181fSAndroid Build Coastguard Worker				<P>
618*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
619*8b26181fSAndroid Build Coastguard Worker					<TR>
620*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
621*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
622*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
623*8b26181fSAndroid Build Coastguard Worker					</TR>
624*8b26181fSAndroid Build Coastguard Worker					<TR>
625*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>command</TD>
626*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
627*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>'F' (indicating 'filter')</TD>
628*8b26181fSAndroid Build Coastguard Worker					</TR>
629*8b26181fSAndroid Build Coastguard Worker					<TR>
630*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>count</TD>
631*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>4</TD>
632*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>The number of command in the Berkeley Packet Filter that follow.</TD>
633*8b26181fSAndroid Build Coastguard Worker					</TR>
634*8b26181fSAndroid Build Coastguard Worker					<TR>
635*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>BPF program</TD>
636*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>'n'</TD>
637*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>8 bytes of each command (repeated 'n' times).<BR>
638*8b26181fSAndroid Build Coastguard Worker									Each command consists of that C-style structure which contains:
639*8b26181fSAndroid Build Coastguard Worker							<P>
640*8b26181fSAndroid Build Coastguard Worker							<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
641*8b26181fSAndroid Build Coastguard Worker								<TR>
642*8b26181fSAndroid Build Coastguard Worker								<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
643*8b26181fSAndroid Build Coastguard Worker								<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
644*8b26181fSAndroid Build Coastguard Worker								<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
645*8b26181fSAndroid Build Coastguard Worker								</TR>
646*8b26181fSAndroid Build Coastguard Worker								<TR>
647*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>opcode</TD>
648*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP ALIGN=CENTER>2</TD>
649*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>The command's opcode.</TD>
650*8b26181fSAndroid Build Coastguard Worker								</TR>
651*8b26181fSAndroid Build Coastguard Worker								<TR>
652*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>'jt'</TD>
653*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP ALIGN=CENTER>1</TD>
654*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>The 'jump if true' program counter offset.</TD>
655*8b26181fSAndroid Build Coastguard Worker								</TR>
656*8b26181fSAndroid Build Coastguard Worker								<TR>
657*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>'jf'</TD>
658*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP ALIGN=CENTER>1</TD>
659*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>The 'jump if false' program counter offset.</TD>
660*8b26181fSAndroid Build Coastguard Worker								</TR>
661*8b26181fSAndroid Build Coastguard Worker								<TR>
662*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>'k'</TD>
663*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP ALIGN=CENTER>4</TD>
664*8b26181fSAndroid Build Coastguard Worker									<TD VALIGN=TOP>The 'other' data field.</TD>
665*8b26181fSAndroid Build Coastguard Worker								</TR>
666*8b26181fSAndroid Build Coastguard Worker							</TABLE>
667*8b26181fSAndroid Build Coastguard Worker							<P>
668*8b26181fSAndroid Build Coastguard Worker							Refer to the bpf(4) man page for more details.
669*8b26181fSAndroid Build Coastguard Worker						</TD>
670*8b26181fSAndroid Build Coastguard Worker					</TR>
671*8b26181fSAndroid Build Coastguard Worker				</TABLE>
672*8b26181fSAndroid Build Coastguard Worker			</TD>
673*8b26181fSAndroid Build Coastguard Worker		</TR>
674*8b26181fSAndroid Build Coastguard Worker		<TR>
675*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>IOP -> SMP</TD>
676*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>In return the IOP will send its (possibly empty) NULL terminated error response string.</TD>
677*8b26181fSAndroid Build Coastguard Worker		</TR>
678*8b26181fSAndroid Build Coastguard Worker		<TR><TH COLSPAN=3><HR WIDTH=100%></TH></TR>
679*8b26181fSAndroid Build Coastguard Worker		<TR>
680*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ROWSPAN=2>pcap_stats()</TD>
681*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
682*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>At any time, the SMP can issue a 'retrieve statistics' command which contains:<BR>
683*8b26181fSAndroid Build Coastguard Worker				<P>
684*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
685*8b26181fSAndroid Build Coastguard Worker					<TR>
686*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
687*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
688*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
689*8b26181fSAndroid Build Coastguard Worker					</TR>
690*8b26181fSAndroid Build Coastguard Worker					<TR>
691*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>command</TD>
692*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>1</TD>
693*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>'S' (indicating 'request statistics')</TD>
694*8b26181fSAndroid Build Coastguard Worker					</TR>
695*8b26181fSAndroid Build Coastguard Worker				</TABLE>
696*8b26181fSAndroid Build Coastguard Worker			</TD>
697*8b26181fSAndroid Build Coastguard Worker		</TR>
698*8b26181fSAndroid Build Coastguard Worker		<TR>
699*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>IOP -> SMP</TD>
700*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>In return the IOP will send:
701*8b26181fSAndroid Build Coastguard Worker				<P>
702*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
703*8b26181fSAndroid Build Coastguard Worker					<TR>
704*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Name/<BR>Purpose</TH>
705*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER NOWRAP>Size<BR>(in bytes)</TH>
706*8b26181fSAndroid Build Coastguard Worker					<TH VALIGN=TOP ALIGN=CENTER>Description</TH>
707*8b26181fSAndroid Build Coastguard Worker					</TR>
708*8b26181fSAndroid Build Coastguard Worker					<TR>
709*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>ps_recv</TD>
710*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>4</TD>
711*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>The number of packets that passed the filter.</TD>
712*8b26181fSAndroid Build Coastguard Worker					</TR>
713*8b26181fSAndroid Build Coastguard Worker					<TR>
714*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>ps_drop</TD>
715*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>4</TD>
716*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>The number of packets that were dropped because the input queue was full,
717*8b26181fSAndroid Build Coastguard Worker							regardless of whether they passed the filter.</TD>
718*8b26181fSAndroid Build Coastguard Worker					</TR>
719*8b26181fSAndroid Build Coastguard Worker					<TR>
720*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>ps_ifdrop</TD>
721*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP ALIGN=CENTER>4</TD>
722*8b26181fSAndroid Build Coastguard Worker						<TD VALIGN=TOP>The number of packets dropped by the network interface
723*8b26181fSAndroid Build Coastguard Worker							(regardless of whether they would have passed the input filter).</TD>
724*8b26181fSAndroid Build Coastguard Worker					</TR>
725*8b26181fSAndroid Build Coastguard Worker				</TABLE>
726*8b26181fSAndroid Build Coastguard Worker			</TD>
727*8b26181fSAndroid Build Coastguard Worker		</TR>
728*8b26181fSAndroid Build Coastguard Worker		<TR><TH COLSPAN=3><HR WIDTH=100%></TH></TR>
729*8b26181fSAndroid Build Coastguard Worker		<TR>
730*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ROWSPAN=1>pcap_close()</TD>
731*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER NOWRAP>SMP -> IOP</TD>
732*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP>At any time, the SMP can close the TCP session with the IOP.</TD>
733*8b26181fSAndroid Build Coastguard Worker		</TR>
734*8b26181fSAndroid Build Coastguard Worker		<TR><TH COLSPAN=3><HR WIDTH=100%></TH></TR>
735*8b26181fSAndroid Build Coastguard Worker	</TABLE>
736*8b26181fSAndroid Build Coastguard Worker</UL>
737*8b26181fSAndroid Build Coastguard Worker
738*8b26181fSAndroid Build Coastguard Worker<H3>Interface ID Naming Convention</H3>
739*8b26181fSAndroid Build Coastguard Worker<UL>
740*8b26181fSAndroid Build Coastguard Worker	Each interface within an IOP will be referred to uniquely.  Since an currently contains
741*8b26181fSAndroid Build Coastguard Worker	8 monitorable WAN ports and a monitorable Ethernet port, the naming convention is:
742*8b26181fSAndroid Build Coastguard Worker	<P>
743*8b26181fSAndroid Build Coastguard Worker	<CENTER>
744*8b26181fSAndroid Build Coastguard Worker	<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
745*8b26181fSAndroid Build Coastguard Worker		<TR><TH>Interface #</TH>		<TH>Type</TH>					<TH>Name</TH></TR>
746*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>1</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan0</TD></TR>
747*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>2</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan1</TD></TR>
748*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>3</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan2</TD></TR>
749*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>4</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan3</TD></TR>
750*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>5</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan4</TD></TR>
751*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>6</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan5</TD></TR>
752*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>7</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan6</TD></TR>
753*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>8</TD>		<TD ALIGN=CENTER>WAN</TD>		<TD ALIGN=CENTER>wan7</TD></TR>
754*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>9</TD>		<TD ALIGN=CENTER>Ethernet</TD>	<TD ALIGN=CENTER>eth0</TD></TR>
755*8b26181fSAndroid Build Coastguard Worker		<TR><TD ALIGN=CENTER>10</TD>	<TD ALIGN=CENTER>Ethernet</TD>	<TD ALIGN=CENTER>eth1</TD></TR>
756*8b26181fSAndroid Build Coastguard Worker	</TABLE>
757*8b26181fSAndroid Build Coastguard Worker	</CENTER>
758*8b26181fSAndroid Build Coastguard Worker</UL>
759*8b26181fSAndroid Build Coastguard Worker
760*8b26181fSAndroid Build Coastguard Worker<H3>Packet Trace Data Format</H3>
761*8b26181fSAndroid Build Coastguard Worker<UL>
762*8b26181fSAndroid Build Coastguard Worker	The format of the trace data that is sent to the SMP follows a portion of the libpcap file format
763*8b26181fSAndroid Build Coastguard Worker	and is summarized here.  This format specifies the generic requirements needed to
764*8b26181fSAndroid Build Coastguard Worker	be able to decode packets, but does not cover ACN specifics such as custom MAC addressing
765*8b26181fSAndroid Build Coastguard Worker	and WAN protocol support.
766*8b26181fSAndroid Build Coastguard Worker	<P>
767*8b26181fSAndroid Build Coastguard Worker
768*8b26181fSAndroid Build Coastguard Worker	Although a libpcap file begins with a global header followed by zero or
769*8b26181fSAndroid Build Coastguard Worker	more records for each captured packet, trace data sent to the SMP does NOT begin with a global header.
770*8b26181fSAndroid Build Coastguard Worker	A trace sequence looks like this:
771*8b26181fSAndroid Build Coastguard Worker	<P>
772*8b26181fSAndroid Build Coastguard Worker	<TABLE>
773*8b26181fSAndroid Build Coastguard Worker		<TR>
774*8b26181fSAndroid Build Coastguard Worker			<TD STYLE="background-color: #c0FFc0">&nbsp;[Packet Header]&nbsp;</TD>
775*8b26181fSAndroid Build Coastguard Worker			<TD STYLE="background-color: #c0FFc0">&nbsp;[Packet Data]&nbsp;</TD>
776*8b26181fSAndroid Build Coastguard Worker			<TD STYLE="background-color: #c0c0FF">&nbsp;[Packet Header]&nbsp;</TD>
777*8b26181fSAndroid Build Coastguard Worker			<TD STYLE="background-color: #c0c0FF">&nbsp;[Packet Data]&nbsp;</TD>
778*8b26181fSAndroid Build Coastguard Worker			<TD STYLE="background-color: #e0c0c0">&nbsp;[Packet Header]&nbsp;</TD>
779*8b26181fSAndroid Build Coastguard Worker			<TD STYLE="background-color: #e0c0c0">&nbsp;[Packet Data]&nbsp;</TD>
780*8b26181fSAndroid Build Coastguard Worker			<TD>...</TD>
781*8b26181fSAndroid Build Coastguard Worker		</TR>
782*8b26181fSAndroid Build Coastguard Worker	</TABLE>
783*8b26181fSAndroid Build Coastguard Worker
784*8b26181fSAndroid Build Coastguard Worker<H4>Packet Header</H4>
785*8b26181fSAndroid Build Coastguard Worker	<UL>
786*8b26181fSAndroid Build Coastguard Worker		Each captured packet starts with a header that contains the following values
787*8b26181fSAndroid Build Coastguard Worker		(in network neutral order):
788*8b26181fSAndroid Build Coastguard Worker
789*8b26181fSAndroid Build Coastguard Worker		<FONT SIZE=-1>
790*8b26181fSAndroid Build Coastguard Worker		<PRE>
791*8b26181fSAndroid Build Coastguard Worker uint32 tv_sec;  /* timestamp seconds */
792*8b26181fSAndroid Build Coastguard Worker uint32 tv_usec; /* timestamp microseconds */
793*8b26181fSAndroid Build Coastguard Worker uint32 caplen;  /* number of octets in the following packet */
794*8b26181fSAndroid Build Coastguard Worker uint32 len;     /* original length of packet on the wire */
795*8b26181fSAndroid Build Coastguard Worker		</PRE>
796*8b26181fSAndroid Build Coastguard Worker		</FONT>
797*8b26181fSAndroid Build Coastguard Worker
798*8b26181fSAndroid Build Coastguard Worker		<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
799*8b26181fSAndroid Build Coastguard Worker			<TR>
800*8b26181fSAndroid Build Coastguard Worker				<TD VALIGN=TOP>tv_sec</TD>
801*8b26181fSAndroid Build Coastguard Worker				<TD>The date and time when this packet was captured.
802*8b26181fSAndroid Build Coastguard Worker					This value is in seconds since January 1, 1970 00:00:00 GMT;
803*8b26181fSAndroid Build Coastguard Worker					this is also known as a UN*X time_t. You can use the ANSI C
804*8b26181fSAndroid Build Coastguard Worker					<em>time()</em> function from <em>time.h</em> to get this value,
805*8b26181fSAndroid Build Coastguard Worker					but you might use a more optimized way to get this timestamp value.
806*8b26181fSAndroid Build Coastguard Worker					If this timestamp isn't based on GMT (UTC), use <em>thiszone</em>
807*8b26181fSAndroid Build Coastguard Worker					from the global header for adjustments.</TD>
808*8b26181fSAndroid Build Coastguard Worker			</TR>
809*8b26181fSAndroid Build Coastguard Worker			<TR>
810*8b26181fSAndroid Build Coastguard Worker				<TD VALIGN=TOP>tv_usec</TD>
811*8b26181fSAndroid Build Coastguard Worker				<TD>The microseconds when this packet was captured, as an offset to <em>ts_sec</em>.
812*8b26181fSAndroid Build Coastguard Worker					<B>Beware: </B>this value must never reach 1 second (1,000,000),
813*8b26181fSAndroid Build Coastguard Worker					in this case <em>ts_sec</em> must be increased instead!</TD>
814*8b26181fSAndroid Build Coastguard Worker			</TR>
815*8b26181fSAndroid Build Coastguard Worker			<TR>
816*8b26181fSAndroid Build Coastguard Worker				<TD VALIGN=TOP>caplen</TD>
817*8b26181fSAndroid Build Coastguard Worker				<TD>The number of bytes actually provided in the capture record.
818*8b26181fSAndroid Build Coastguard Worker					This value should never become larger than <em>len</em> or the
819*8b26181fSAndroid Build Coastguard Worker					<em>snaplen</em> value specified during the capture.</TD>
820*8b26181fSAndroid Build Coastguard Worker			</TR>
821*8b26181fSAndroid Build Coastguard Worker			<TR>
822*8b26181fSAndroid Build Coastguard Worker				<TD VALIGN=TOP>len</TD>
823*8b26181fSAndroid Build Coastguard Worker				<TD>The length of the packet "on the wire" when it was captured.
824*8b26181fSAndroid Build Coastguard Worker					If <em>caplen</em> and <em>len</em> differ, the actually
825*8b26181fSAndroid Build Coastguard Worker					saved packet size was limited by the value of <em>snaplen</em> specified
826*8b26181fSAndroid Build Coastguard Worker					during one of the capture directives such as pcap_dispatch().</TD>
827*8b26181fSAndroid Build Coastguard Worker			</TR>
828*8b26181fSAndroid Build Coastguard Worker		</TABLE>
829*8b26181fSAndroid Build Coastguard Worker	</UL>
830*8b26181fSAndroid Build Coastguard Worker
831*8b26181fSAndroid Build Coastguard Worker<H4>Packet Data</H4>
832*8b26181fSAndroid Build Coastguard Worker	<UL>
833*8b26181fSAndroid Build Coastguard Worker	The actual packet data will immediately follow the packet header as a sequence of <em>caplen</em> octets.
834*8b26181fSAndroid Build Coastguard Worker	Depending on the DLT encoding number assigned to the interface, the packet data will contain an additional
835*8b26181fSAndroid Build Coastguard Worker	custom header used to convey WAN port related information.
836*8b26181fSAndroid Build Coastguard Worker	</UL>
837*8b26181fSAndroid Build Coastguard Worker
838*8b26181fSAndroid Build Coastguard Worker<H4>ACN Custom Packet Header</H4>
839*8b26181fSAndroid Build Coastguard Worker	<UL>
840*8b26181fSAndroid Build Coastguard Worker	PCAP, Wireshark and Tcpdump enhancements have been added to the ACN to support
841*8b26181fSAndroid Build Coastguard Worker	monitoring of its ports, however each of these facilities were focused on capturing
842*8b26181fSAndroid Build Coastguard Worker	and displaying traffic from LAN interfaces.  The SITA extensions to these facilities
843*8b26181fSAndroid Build Coastguard Worker	are used to also provide the ability to capture, filter, and display information from
844*8b26181fSAndroid Build Coastguard Worker	an ACN's WAN ports.
845*8b26181fSAndroid Build Coastguard Worker	<P>
846*8b26181fSAndroid Build Coastguard Worker	Although each packet follows the standard libpcap format, since there are
847*8b26181fSAndroid Build Coastguard Worker	two types of interfaces that can be monitored, the format of the data
848*8b26181fSAndroid Build Coastguard Worker	packet varies slightly.
849*8b26181fSAndroid Build Coastguard Worker	<P>
850*8b26181fSAndroid Build Coastguard Worker	<UL TYPE=DISC>
851*8b26181fSAndroid Build Coastguard Worker		<LI>For Ethernet (like) devices, the packet format is unchanged from the standard Pcap format.
852*8b26181fSAndroid Build Coastguard Worker		<LI>For WAN devices, the packet contains a 5 byte header that precedes the actual captured data
853*8b26181fSAndroid Build Coastguard Worker			described by the following table:
854*8b26181fSAndroid Build Coastguard Worker	</UL>
855*8b26181fSAndroid Build Coastguard Worker	<P>
856*8b26181fSAndroid Build Coastguard Worker	<CENTER>
857*8b26181fSAndroid Build Coastguard Worker	<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3>
858*8b26181fSAndroid Build Coastguard Worker	<TR>	<TH>Octet</TH>
859*8b26181fSAndroid Build Coastguard Worker			<TH>Name</TH>
860*8b26181fSAndroid Build Coastguard Worker			<TH>Mask/Value</TH>
861*8b26181fSAndroid Build Coastguard Worker			<TH COLSPAN=2>Definition</TH>		</TR>
862*8b26181fSAndroid Build Coastguard Worker
863*8b26181fSAndroid Build Coastguard Worker	<TR>	<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=3>0</TH>
864*8b26181fSAndroid Build Coastguard Worker			<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=3>Control / Status</TH>
865*8b26181fSAndroid Build Coastguard Worker
866*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxxx0</FONT></TD>
867*8b26181fSAndroid Build Coastguard Worker			<TD>Transmitted by capture device</TD>
868*8b26181fSAndroid Build Coastguard Worker			<TD ROWSPAN=2 ALIGN=CENTER>(see 'Errors' octets)</TD>							</TR>
869*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxxx1</FONT></TD>
870*8b26181fSAndroid Build Coastguard Worker			<TD>Received by capture device</TD>												</TR>
871*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">1xxxxxxx</FONT></TD>
872*8b26181fSAndroid Build Coastguard Worker			<TD COLSPAN=2>No buffer was available during capture of previous packet.</TD>	</TR>
873*8b26181fSAndroid Build Coastguard Worker
874*8b26181fSAndroid Build Coastguard Worker	<TR>	<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=8>1</TH>
875*8b26181fSAndroid Build Coastguard Worker			<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=8>Signals</TH>
876*8b26181fSAndroid Build Coastguard Worker
877*8b26181fSAndroid Build Coastguard Worker			<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxxx1</FONT></TD>	<TD COLSPAN=2>DSR asserted</TD>		</TR>
878*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxx1x</FONT></TD>	<TD COLSPAN=2>DTR asserted</TD>		</TR>
879*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxx1xx</FONT></TD>	<TD COLSPAN=2>CTS asserted</TD>		</TR>
880*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxx1xxx</FONT></TD>	<TD COLSPAN=2>RTS asserted</TD>		</TR>
881*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxx1xxxx</FONT></TD>	<TD COLSPAN=2>DCD asserted</TD>		</TR>
882*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xx1xxxxx</FONT></TD>	<TD COLSPAN=2>Undefined</TD>		</TR>
883*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">x1xxxxxx</FONT></TD>	<TD COLSPAN=2>Undefined</TD>		</TR>
884*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">1xxxxxxx</FONT></TD>	<TD COLSPAN=2>Undefined</TD>		</TR>
885*8b26181fSAndroid Build Coastguard Worker
886*8b26181fSAndroid Build Coastguard Worker	<TR>	<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=9>2</TH>
887*8b26181fSAndroid Build Coastguard Worker			<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=9>Errors<BR>(octet 1)</TH>
888*8b26181fSAndroid Build Coastguard Worker
889*8b26181fSAndroid Build Coastguard Worker			<TH>&nbsp;</TH>															<TH>Tx</TH>						<TH>Rx</TH>				</TR>
890*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxxx1</FONT></TD>	<TD>Underrun</TD>				<TD>Framing</TD>		</TR>
891*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxx1x</FONT></TD>	<TD>CTS Lost</TD>				<TD>Parity</TD>			</TR>
892*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxx1xx</FONT></TD>	<TD>UART Error</TD>				<TD>Collision</TD>		</TR>
893*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxx1xxx</FONT></TD>	<TD>Re-Tx Limit Reached</TD>	<TD>Long Frame</TD>		</TR>
894*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxx1xxxx</FONT></TD>	<TD>Undefined</TD>				<TD>Short Frame</TD>	</TR>
895*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xx1xxxxx</FONT></TD>	<TD>Undefined</TD>				<TD>Undefined</TD>		</TR>
896*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">x1xxxxxx</FONT></TD>	<TD>Undefined</TD>				<TD>Undefined</TD>		</TR>
897*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">1xxxxxxx</FONT></TD>	<TD>Undefined</TD>				<TD>Undefined</TD>		</TR>
898*8b26181fSAndroid Build Coastguard Worker
899*8b26181fSAndroid Build Coastguard Worker	<TR>	<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=9>3</TH>
900*8b26181fSAndroid Build Coastguard Worker			<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=9>Errors<BR>(octet 2)</TH>
901*8b26181fSAndroid Build Coastguard Worker
902*8b26181fSAndroid Build Coastguard Worker			<TH>&nbsp;</TH>															<TH>Tx</TH>			<TH>Rx</TH>						</TR>
903*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxxx1</FONT></TD>	<TD>Undefined</TD>	<TD>Non-Octet Aligned</TD>		</TR>
904*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxxx1x</FONT></TD>	<TD>Undefined</TD>	<TD>Abort Received</TD>			</TR>
905*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxxx1xx</FONT></TD>	<TD>Undefined</TD>	<TD>CD Lost</TD>				</TR>
906*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxxx1xxx</FONT></TD>	<TD>Undefined</TD>	<TD>Digital PLL Error</TD>		</TR>
907*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xxx1xxxx</FONT></TD>	<TD>Undefined</TD>	<TD>Overrun</TD>				</TR>
908*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">xx1xxxxx</FONT></TD>	<TD>Undefined</TD>	<TD>Frame Length Violation</TD>	</TR>
909*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">x1xxxxxx</FONT></TD>	<TD>Undefined</TD>	<TD>CRC Error</TD>				</TR>
910*8b26181fSAndroid Build Coastguard Worker	<TR>	<TD VALIGN=TOP ALIGN=CENTER><FONT FACE="COURIER">1xxxxxxx</FONT></TD>	<TD>Undefined</TD>	<TD>Break Received</TD>			</TR>
911*8b26181fSAndroid Build Coastguard Worker
912*8b26181fSAndroid Build Coastguard Worker	<TR>	<TH VALIGN=TOP ALIGN=CENTER ROWSPAN=12>4</TH>
913*8b26181fSAndroid Build Coastguard Worker			<TH VALIGN=TOP ALIGN=CENTER>Protocol</TH>
914*8b26181fSAndroid Build Coastguard Worker
915*8b26181fSAndroid Build Coastguard Worker			<TD COLSPAN=3>
916*8b26181fSAndroid Build Coastguard Worker				<CENTER>
917*8b26181fSAndroid Build Coastguard Worker				<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
918*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x01</TD>	<TD>-</TD>	<TD>LAPB (BOP)				<SUP>&nbsp;</SUP>	</TD>	</TR>
919*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x02</TD>	<TD>-</TD>	<TD>Ethernet				<SUP>1</SUP>		</TD>	</TR>
920*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x03</TD>	<TD>-</TD>	<TD>Async (Interrupt IO)	<SUP>&nbsp;</SUP>	</TD>	</TR>
921*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x04</TD>	<TD>-</TD>	<TD>Async (Block IO)		<SUP>&nbsp;</SUP>	</TD>	</TR>
922*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x05</TD>	<TD>-</TD>	<TD>IPARS					<SUP>&nbsp;</SUP>	</TD>	</TR>
923*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x06</TD>	<TD>-</TD>	<TD>UTS						<SUP>&nbsp;</SUP>	</TD>	</TR>
924*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x07</TD>	<TD>-</TD>	<TD>PPP (HDLC)				<SUP>&nbsp;</SUP>	</TD>	</TR>
925*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x08</TD>	<TD>-</TD>	<TD>SDLC					<SUP>&nbsp;</SUP>	</TD>	</TR>
926*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x09</TD>	<TD>-</TD>	<TD>Token Ring				<SUP>1</SUP>		</TD>	</TR>
927*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x10</TD>	<TD>-</TD>	<TD>I2C						<SUP>&nbsp;</SUP>	</TD>	</TR>
928*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x11</TD>	<TD>-</TD>	<TD>DPM Link				<SUP>&nbsp;</SUP>	</TD>	</TR>
929*8b26181fSAndroid Build Coastguard Worker					<TR VALIGN=BOTTOM><TD ALIGN=CENTER>0x12</TD>	<TD>-</TD>	<TD>Frame Relay (BOP)		<SUP>&nbsp;</SUP>	</TD>	</TR>
930*8b26181fSAndroid Build Coastguard Worker				</TABLE>
931*8b26181fSAndroid Build Coastguard Worker				</CENTER>
932*8b26181fSAndroid Build Coastguard Worker				<P>
933*8b26181fSAndroid Build Coastguard Worker				<STRONG>Note 1:</STRONG>
934*8b26181fSAndroid Build Coastguard Worker				Ethernet and Token Ring frames will never be sent as DLT_SITA (with the 5 octet header),
935*8b26181fSAndroid Build Coastguard Worker				but will be sent as their corresponding DLT types instead.
936*8b26181fSAndroid Build Coastguard Worker			</TD>
937*8b26181fSAndroid Build Coastguard Worker	</TR>
938*8b26181fSAndroid Build Coastguard Worker	</TABLE>
939*8b26181fSAndroid Build Coastguard Worker	</CENTER>
940*8b26181fSAndroid Build Coastguard Worker</UL>
941*8b26181fSAndroid Build Coastguard Worker<P>
942*8b26181fSAndroid Build Coastguard Worker</UL>
943*8b26181fSAndroid Build Coastguard Worker</UL>
944