?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{BLAME START}

library

?curdirlinks? -

Blame information for rev 6

Line No. Rev Author Line
1 6 kaklik <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>Procyon AVRlib: net/net.c Source File</title>
4 <link href="dox.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.4.2 -->
7 <div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
8 <div class="nav">
9 <a class="el" href="dir_000001.html">net</a></div>
10 <h1>net.c</h1><a href="net_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/*! \file net.c \brief Network support library. */</span>
11 00002 <span class="comment">//*****************************************************************************</span>
12 00003 <span class="comment">//</span>
13 00004 <span class="comment">// File Name : 'net.c'</span>
14 00005 <span class="comment">// Title : Network support library</span>
15 00006 <span class="comment">// Author : Pascal Stang</span>
16 00007 <span class="comment">// Created : 8/30/2004</span>
17 00008 <span class="comment">// Revised : 7/3/2005</span>
18 00009 <span class="comment">// Version : 0.1</span>
19 00010 <span class="comment">// Target MCU : Atmel AVR series</span>
20 00011 <span class="comment">// Editor Tabs : 4</span>
21 00012 <span class="comment">//</span>
22 00013 <span class="comment">//*****************************************************************************</span>
23 00014
24 00015 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>
25 00016 <span class="preprocessor">#include "<a class="code" href="global_8h.html">global.h</a>"</span>
26 00017 <span class="preprocessor">#include "<a class="code" href="rprintf_8h.html">rprintf.h</a>"</span>
27 00018
28 00019 <span class="preprocessor">#include "<a class="code" href="net_8h.html">net.h</a>"</span>
29 00020
30 <a name="l00021"></a><a class="code" href="group__net.html#ga2">00021</a> uint16_t <a class="code" href="group__net.html#ga2">htons</a>(uint16_t val)
31 00022 {
32 00023 <span class="keywordflow">return</span> (val&lt;&lt;8) | (val&gt;&gt;8);
33 00024 }
34 00025
35 <a name="l00026"></a><a class="code" href="group__net.html#ga3">00026</a> uint32_t <a class="code" href="group__net.html#ga3">htonl</a>(uint32_t val)
36 00027 {
37 00028 <span class="keywordflow">return</span> (<a class="code" href="group__net.html#ga2">htons</a>(val&gt;&gt;16) | (uint32_t)<a class="code" href="group__net.html#ga2">htons</a>(val&amp;0x0000FFFF)&lt;&lt;16);
38 00029 }
39 00030
40 00031
41 <a name="l00032"></a><a class="code" href="group__net.html#ga4">00032</a> uint16_t <a class="code" href="group__net.html#ga4">netChecksum</a>(<span class="keywordtype">void</span> *data, uint16_t len)
42 00033 {
43 00034 <span class="keyword">register</span> uint32_t sum = 0;
44 00035
45 00036 <span class="keywordflow">for</span> (;;) {
46 00037 <span class="keywordflow">if</span> (len &lt; 2)
47 00038 <span class="keywordflow">break</span>;
48 00039 <span class="comment">//sum += *((uint16_t *)data)++;</span>
49 00040 sum += *((uint16_t *)data);
50 00041 data+=2;
51 00042 len -= 2;
52 00043 }
53 00044 <span class="keywordflow">if</span> (len)
54 00045 sum += *(uint8_t *) data;
55 00046
56 00047 <span class="keywordflow">while</span> ((len = (uint16_t) (sum &gt;&gt; 16)) != 0)
57 00048 sum = (uint16_t) sum + len;
58 00049
59 00050 <span class="keywordflow">return</span> (uint16_t) sum ^ 0xFFFF;
60 00051 }
61 00052
62 <a name="l00053"></a><a class="code" href="group__net.html#ga5">00053</a> <span class="keywordtype">void</span> <a class="code" href="group__net.html#ga5">netPrintEthAddr</a>(<span class="keyword">struct</span> netEthAddr* ethaddr)
63 00054 {
64 00055 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[0]);
65 00056 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);
66 00057 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[1]);
67 00058 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);
68 00059 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[2]);
69 00060 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);
70 00061 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[3]);
71 00062 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);
72 00063 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[4]);
73 00064 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);
74 00065 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[5]);
75 00066 }
76 00067
77 <a name="l00068"></a><a class="code" href="group__net.html#ga6">00068</a> <span class="keywordtype">void</span> <a class="code" href="group__net.html#ga6">netPrintIPAddr</a>(uint32_t ipaddr)
78 00069 {
79 00070 rprintf(<span class="stringliteral">"%d.%d.%d.%d"</span>,
80 00071 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[3],
81 00072 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[2],
82 00073 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[1],
83 00074 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[0]);
84 00075 }
85 00076
86 00077 <span class="comment">/*</span>
87 00078 <span class="comment">void netPrintEthHeader(struct netEthHeader* eth_hdr)</span>
88 00079 <span class="comment">{</span>
89 00080 <span class="comment"> rprintfProgStrM("Eth Packet Type: 0x");</span>
90 00081 <span class="comment"> rprintfu16(eth_hdr-&gt;type);</span>
91 00082 <span class="comment"></span>
92 00083 <span class="comment"> rprintfProgStrM(" SRC:");</span>
93 00084 <span class="comment"> netPrintEthAddr(&amp;eth_hdr-&gt;src);</span>
94 00085 <span class="comment"> rprintfProgStrM("-&gt;DST:");</span>
95 00086 <span class="comment"> netPrintEthAddr(&amp;eth_hdr-&gt;dest);</span>
96 00087 <span class="comment"> rprintfCRLF();</span>
97 00088 <span class="comment">}</span>
98 00089 <span class="comment"></span>
99 00090 <span class="comment">void netPrintIpHeader(struct netIpHeader* ipheader)</span>
100 00091 <span class="comment">{</span>
101 00092 <span class="comment"> rprintfProgStrM("IP Header\r\n");</span>
102 00093 <span class="comment"> rprintf("Ver : %d\r\n", (ipheader-&gt;vhl)&gt;&gt;4);</span>
103 00094 <span class="comment"> rprintf("Length : %d\r\n", htons(ipheader-&gt;len));</span>
104 00095 <span class="comment"> if(ipheader-&gt;proto == IP_PROTO_ICMP)</span>
105 00096 <span class="comment"> rprintfProgStrM("Protocol: ICMP\r\n");</span>
106 00097 <span class="comment"> else if(ipheader-&gt;proto == IP_PROTO_TCP)</span>
107 00098 <span class="comment"> rprintfProgStrM("Protocol: TCP\r\n");</span>
108 00099 <span class="comment"> else if(ipheader-&gt;proto == IP_PROTO_UDP)</span>
109 00100 <span class="comment"> rprintfProgStrM("Protocol: UDP\r\n");</span>
110 00101 <span class="comment"> else</span>
111 00102 <span class="comment"> rprintf("Protocol: %d\r\n", ipheader-&gt;proto);</span>
112 00103 <span class="comment"> </span>
113 00104 <span class="comment"> rprintfProgStrM("SourceIP: "); netPrintIPAddr(htonl(ipheader-&gt;srcipaddr)); rprintfCRLF();</span>
114 00105 <span class="comment"> rprintfProgStrM("Dest IP: "); netPrintIPAddr(htonl(ipheader-&gt;destipaddr)); rprintfCRLF();</span>
115 00106 <span class="comment">}</span>
116 00107 <span class="comment"></span>
117 00108 <span class="comment">void netPrintTcpHeader(struct netTcpHeader* tcpheader)</span>
118 00109 <span class="comment">{</span>
119 00110 <span class="comment"> rprintfProgStrM("TCP Header\r\n");</span>
120 00111 <span class="comment"> rprintf("Src Port: %d\r\n", htons(tcpheader-&gt;srcport));</span>
121 00112 <span class="comment"> rprintf("Dst Port: %d\r\n", htons(tcpheader-&gt;destport));</span>
122 00113 <span class="comment"> rprintfProgStrM("Seq Num : 0x"); rprintfu32(htonl(tcpheader-&gt;seqno)); rprintfCRLF();</span>
123 00114 <span class="comment"> rprintfProgStrM("Ack Num : 0x"); rprintfu32(htonl(tcpheader-&gt;ackno)); rprintfCRLF();</span>
124 00115 <span class="comment"> rprintfProgStrM("Flags : ");</span>
125 00116 <span class="comment"> if(tcpheader-&gt;flags &amp; TCP_FLAGS_FIN)</span>
126 00117 <span class="comment"> rprintfProgStrM("FIN ");</span>
127 00118 <span class="comment"> if(tcpheader-&gt;flags &amp; TCP_FLAGS_SYN)</span>
128 00119 <span class="comment"> rprintfProgStrM("SYN ");</span>
129 00120 <span class="comment"> if(tcpheader-&gt;flags &amp; TCP_FLAGS_RST)</span>
130 00121 <span class="comment"> rprintfProgStrM("RST ");</span>
131 00122 <span class="comment"> if(tcpheader-&gt;flags &amp; TCP_FLAGS_PSH)</span>
132 00123 <span class="comment"> rprintfProgStrM("PSH ");</span>
133 00124 <span class="comment"> if(tcpheader-&gt;flags &amp; TCP_FLAGS_ACK)</span>
134 00125 <span class="comment"> rprintfProgStrM("ACK ");</span>
135 00126 <span class="comment"> if(tcpheader-&gt;flags &amp; TCP_FLAGS_URG)</span>
136 00127 <span class="comment"> rprintfProgStrM("URG ");</span>
137 00128 <span class="comment"> rprintfCRLF();</span>
138 00129 <span class="comment">}</span>
139 00130 <span class="comment">*/</span>
140 00131
141 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Oct 29 03:41:07 2006 for Procyon AVRlib by&nbsp;
142 <a href="http://www.doxygen.org/index.html">
143 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address>
144 </body>
145 </html>
{BLAME END}
{FOOTER START}

Powered by WebSVN v2.8.3