<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>libhd: PPPoE devices (DSL)</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.3 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul> </div> <h1>PPPoE devices (DSL)<br> <small> [<a class="el" href="group__libhdDEVint.html">Device handling</a>]</small> </h1><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structPPPoEPacket.html">PPPoEPacket</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structPPPoETag.html">PPPoETag</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structPacketCriteria.html">PacketCriteria</a></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g3b1bda6418e81b4d6afda7c6cf4ad3a5">ETH_PPPOE_DISCOVERY</a> 0x8863</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g4365ed2ccb443d340b2a5f79e3cfbb93">ETH_PPPOE_SESSION</a> 0x8864</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gcbcab9fe13d39341d04efbdf4847bd85">CODE_PADI</a> 0x09</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gce47a52318b7b10b7ecd211ff00c1990">CODE_PADO</a> 0x07</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g58ba0c8f130f0efef85f9f798eb060ef">CODE_PADR</a> 0x19</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gac3dafc868fe2300e19d25c7b44d51b5">CODE_PADS</a> 0x65</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g5eca47e978ac054f2e6f7fa03f695801">CODE_PADT</a> 0xA7</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g1da4e40fa965fa6f08cd9ab775bae0ef">TAG_END_OF_LIST</a> 0x0000</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gfae3f5ba34f283e4522a811a54e819bb">TAG_SERVICE_NAME</a> 0x0101</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g2b5ff4e47fa5647997ed2de14cfaa159">TAG_AC_NAME</a> 0x0102</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g3643bf429dd99c99fe4f9e709c3e572f">TAG_HOST_UNIQ</a> 0x0103</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gb67115a3976ed40fd68d008adaad8a93">TAG_AC_COOKIE</a> 0x0104</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gbabbbd15b689c847451144807fed15df">TAG_VENDOR_SPECIFIC</a> 0x0105</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g133ab6c1704f4d3f3923d436179d600a">TAG_RELAY_SESSION_ID</a> 0x0110</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g29f3108974a0b80ed09e7f27f2197fc4">TAG_SERVICE_NAME_ERROR</a> 0x0201</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g14bc349ddc6bbc9bce8a3cae07cb2a0d">TAG_AC_SYSTEM_ERROR</a> 0x0202</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gbf1148f8554fd81de86ca20d98f7d384">TAG_GENERIC_ERROR</a> 0x0203</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g7e1856ac7c6ed757978fc30bb92ace74">MAX_ATTEMPTS</a> 2</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g527693e476ba7efcfbe273753116c099">PADO_TIMEOUT</a> 3</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g91993af6af6c909265f320c91410f938">PPPOE_OVERHEAD</a> 6</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g033844e31b906a938ba7c9a74d66645b">HDR_SIZE</a> (sizeof (struct ethhdr) + PPPOE_OVERHEAD)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gc0681008055cf92566a10402491c7600">MAX_PPPOE_PAYLOAD</a> (ETH_DATA_LEN - PPPOE_OVERHEAD)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g8af9b67a51ed676d35714e14e1d32576">TAG_HDR_SIZE</a> 4</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g9fa39a27d776ef7ac885d3bb160a65e2">NOT_UNICAST</a>(e) ((e[0] & 0x01) != 0)</td></tr> <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g4b47af5e29d0ed8133514278c612d6a4">parse_func</a> (uint16_t type, uint16_t len, unsigned char *data, void *extra)</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g700f0702e53ca9653abee30b8df88708">check_room</a> (<a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conn, unsigned char *cursor, unsigned char *start, uint16_t len)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gd37ecb87696166108f2f239671e24f6a">parse_packet</a> (<a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conn, <a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> *packet, <a class="el" href="group__PPPOEint.html#g4b47af5e29d0ed8133514278c612d6a4">parse_func</a> *func, void *extra)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gd44f122286d46b550fb15f6f0beacfd3">open_interfaces</a> (int n, <a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conns)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gcc7a2dd57973045596aae64071f31791">close_intefaces</a> (int n, <a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conns)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g7e3d98da756c2c4377442dfa656a22ca">send_packet</a> (int fd, <a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> *pkt, size_t size)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g94e5d5c2a8b219c001f82fb02991bc60">receive_packet</a> (int fd, <a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> *pkt, size_t *size)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g3e62af8c32417cebd39acfe7e4421208">parse_hostuniq</a> (uint16_t type, uint16_t len, unsigned char *data, void *extra)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g15139a78c786f9eee67705c183509ed8">packet_for_me</a> (<a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conn, <a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> *packet)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g20e7f22a9ff6dc2b27a8b579b34a1570">parse_pado_tags</a> (uint16_t type, uint16_t len, unsigned char *data, void *extra)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g4e263025a0fa9644a8ba8cf581fd9415">send_padi</a> (int n, <a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conns)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#gc6fc1cf62580afa717f7470ab2359ccd">wait_for_pado</a> (int n, <a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conns)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g687d38bff393787adc362a3e94c312b5">discovery</a> (int n, <a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> *conns)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__PPPOEint.html#g57d61bbba790855de9e51d6202cf1140">hd_scan_pppoe</a> (<a class="el" href="structhd__data__t.html">hd_data_t</a> *hd_data2)</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> PPPoE devices scan functions <hr><h2>Define Documentation</h2> <a class="anchor" name="gcbcab9fe13d39341d04efbdf4847bd85"></a><!-- doxytag: member="pppoe.c::CODE_PADI" ref="gcbcab9fe13d39341d04efbdf4847bd85" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CODE_PADI 0x09 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gce47a52318b7b10b7ecd211ff00c1990"></a><!-- doxytag: member="pppoe.c::CODE_PADO" ref="gce47a52318b7b10b7ecd211ff00c1990" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CODE_PADO 0x07 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g58ba0c8f130f0efef85f9f798eb060ef"></a><!-- doxytag: member="pppoe.c::CODE_PADR" ref="g58ba0c8f130f0efef85f9f798eb060ef" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CODE_PADR 0x19 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gac3dafc868fe2300e19d25c7b44d51b5"></a><!-- doxytag: member="pppoe.c::CODE_PADS" ref="gac3dafc868fe2300e19d25c7b44d51b5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CODE_PADS 0x65 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g5eca47e978ac054f2e6f7fa03f695801"></a><!-- doxytag: member="pppoe.c::CODE_PADT" ref="g5eca47e978ac054f2e6f7fa03f695801" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CODE_PADT 0xA7 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g3b1bda6418e81b4d6afda7c6cf4ad3a5"></a><!-- doxytag: member="pppoe.c::ETH_PPPOE_DISCOVERY" ref="g3b1bda6418e81b4d6afda7c6cf4ad3a5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ETH_PPPOE_DISCOVERY 0x8863 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g4365ed2ccb443d340b2a5f79e3cfbb93"></a><!-- doxytag: member="pppoe.c::ETH_PPPOE_SESSION" ref="g4365ed2ccb443d340b2a5f79e3cfbb93" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ETH_PPPOE_SESSION 0x8864 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g033844e31b906a938ba7c9a74d66645b"></a><!-- doxytag: member="pppoe.c::HDR_SIZE" ref="g033844e31b906a938ba7c9a74d66645b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define HDR_SIZE (sizeof (struct ethhdr) + PPPOE_OVERHEAD) </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g7e1856ac7c6ed757978fc30bb92ace74"></a><!-- doxytag: member="pppoe.c::MAX_ATTEMPTS" ref="g7e1856ac7c6ed757978fc30bb92ace74" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MAX_ATTEMPTS 2 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gc0681008055cf92566a10402491c7600"></a><!-- doxytag: member="pppoe.c::MAX_PPPOE_PAYLOAD" ref="gc0681008055cf92566a10402491c7600" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MAX_PPPOE_PAYLOAD (ETH_DATA_LEN - PPPOE_OVERHEAD) </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g9fa39a27d776ef7ac885d3bb160a65e2"></a><!-- doxytag: member="pppoe.c::NOT_UNICAST" ref="g9fa39a27d776ef7ac885d3bb160a65e2" args="(e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define NOT_UNICAST </td> <td>(</td> <td class="paramtype">e </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> ((e[0] & 0x01) != 0)</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g527693e476ba7efcfbe273753116c099"></a><!-- doxytag: member="pppoe.c::PADO_TIMEOUT" ref="g527693e476ba7efcfbe273753116c099" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define PADO_TIMEOUT 3 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g91993af6af6c909265f320c91410f938"></a><!-- doxytag: member="pppoe.c::PPPOE_OVERHEAD" ref="g91993af6af6c909265f320c91410f938" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define PPPOE_OVERHEAD 6 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gb67115a3976ed40fd68d008adaad8a93"></a><!-- doxytag: member="pppoe.c::TAG_AC_COOKIE" ref="gb67115a3976ed40fd68d008adaad8a93" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_AC_COOKIE 0x0104 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g2b5ff4e47fa5647997ed2de14cfaa159"></a><!-- doxytag: member="pppoe.c::TAG_AC_NAME" ref="g2b5ff4e47fa5647997ed2de14cfaa159" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_AC_NAME 0x0102 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g14bc349ddc6bbc9bce8a3cae07cb2a0d"></a><!-- doxytag: member="pppoe.c::TAG_AC_SYSTEM_ERROR" ref="g14bc349ddc6bbc9bce8a3cae07cb2a0d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_AC_SYSTEM_ERROR 0x0202 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g1da4e40fa965fa6f08cd9ab775bae0ef"></a><!-- doxytag: member="pppoe.c::TAG_END_OF_LIST" ref="g1da4e40fa965fa6f08cd9ab775bae0ef" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_END_OF_LIST 0x0000 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gbf1148f8554fd81de86ca20d98f7d384"></a><!-- doxytag: member="pppoe.c::TAG_GENERIC_ERROR" ref="gbf1148f8554fd81de86ca20d98f7d384" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_GENERIC_ERROR 0x0203 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g8af9b67a51ed676d35714e14e1d32576"></a><!-- doxytag: member="pppoe.c::TAG_HDR_SIZE" ref="g8af9b67a51ed676d35714e14e1d32576" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_HDR_SIZE 4 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g3643bf429dd99c99fe4f9e709c3e572f"></a><!-- doxytag: member="pppoe.c::TAG_HOST_UNIQ" ref="g3643bf429dd99c99fe4f9e709c3e572f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_HOST_UNIQ 0x0103 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g133ab6c1704f4d3f3923d436179d600a"></a><!-- doxytag: member="pppoe.c::TAG_RELAY_SESSION_ID" ref="g133ab6c1704f4d3f3923d436179d600a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_RELAY_SESSION_ID 0x0110 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gfae3f5ba34f283e4522a811a54e819bb"></a><!-- doxytag: member="pppoe.c::TAG_SERVICE_NAME" ref="gfae3f5ba34f283e4522a811a54e819bb" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_SERVICE_NAME 0x0101 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g29f3108974a0b80ed09e7f27f2197fc4"></a><!-- doxytag: member="pppoe.c::TAG_SERVICE_NAME_ERROR" ref="g29f3108974a0b80ed09e7f27f2197fc4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_SERVICE_NAME_ERROR 0x0201 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gbabbbd15b689c847451144807fed15df"></a><!-- doxytag: member="pppoe.c::TAG_VENDOR_SPECIFIC" ref="gbabbbd15b689c847451144807fed15df" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define TAG_VENDOR_SPECIFIC 0x0105 </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <hr><h2>Typedef Documentation</h2> <a class="anchor" name="g4b47af5e29d0ed8133514278c612d6a4"></a><!-- doxytag: member="pppoe.c::parse_func" ref="g4b47af5e29d0ed8133514278c612d6a4" args="(uint16_t type, uint16_t len, unsigned char *data, void *extra)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void <a class="el" href="group__PPPOEint.html#g4b47af5e29d0ed8133514278c612d6a4">parse_func</a>(uint16_t type, uint16_t len, unsigned char *data, void *extra) </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="g700f0702e53ca9653abee30b8df88708"></a><!-- doxytag: member="pppoe.c::check_room" ref="g700f0702e53ca9653abee30b8df88708" args="(PPPoEConnection *conn, unsigned char *cursor, unsigned char *start, uint16_t len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int check_room </td> <td>(</td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"> <em>cursor</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"> <em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gcc7a2dd57973045596aae64071f31791"></a><!-- doxytag: member="pppoe.c::close_intefaces" ref="gcc7a2dd57973045596aae64071f31791" args="(int n, PPPoEConnection *conns)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void close_intefaces </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conns</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g687d38bff393787adc362a3e94c312b5"></a><!-- doxytag: member="pppoe.c::discovery" ref="g687d38bff393787adc362a3e94c312b5" args="(int n, PPPoEConnection *conns)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void discovery </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conns</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g57d61bbba790855de9e51d6202cf1140"></a><!-- doxytag: member="pppoe.c::hd_scan_pppoe" ref="g57d61bbba790855de9e51d6202cf1140" args="(hd_data_t *hd_data2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void hd_scan_pppoe </td> <td>(</td> <td class="paramtype"><a class="el" href="structhd__data__t.html">hd_data_t</a> * </td> <td class="paramname"> <em>hd_data2</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gd44f122286d46b550fb15f6f0beacfd3"></a><!-- doxytag: member="pppoe.c::open_interfaces" ref="gd44f122286d46b550fb15f6f0beacfd3" args="(int n, PPPoEConnection *conns)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int open_interfaces </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conns</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g15139a78c786f9eee67705c183509ed8"></a><!-- doxytag: member="pppoe.c::packet_for_me" ref="g15139a78c786f9eee67705c183509ed8" args="(PPPoEConnection *conn, PPPoEPacket *packet)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int packet_for_me </td> <td>(</td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> * </td> <td class="paramname"> <em>packet</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g3e62af8c32417cebd39acfe7e4421208"></a><!-- doxytag: member="pppoe.c::parse_hostuniq" ref="g3e62af8c32417cebd39acfe7e4421208" args="(uint16_t type, uint16_t len, unsigned char *data, void *extra)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void parse_hostuniq </td> <td>(</td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"> <em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>extra</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gd37ecb87696166108f2f239671e24f6a"></a><!-- doxytag: member="pppoe.c::parse_packet" ref="gd37ecb87696166108f2f239671e24f6a" args="(PPPoEConnection *conn, PPPoEPacket *packet, parse_func *func, void *extra)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int parse_packet </td> <td>(</td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> * </td> <td class="paramname"> <em>packet</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__PPPOEint.html#g4b47af5e29d0ed8133514278c612d6a4">parse_func</a> * </td> <td class="paramname"> <em>func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>extra</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g20e7f22a9ff6dc2b27a8b579b34a1570"></a><!-- doxytag: member="pppoe.c::parse_pado_tags" ref="g20e7f22a9ff6dc2b27a8b579b34a1570" args="(uint16_t type, uint16_t len, unsigned char *data, void *extra)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void parse_pado_tags </td> <td>(</td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"> <em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>extra</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g94e5d5c2a8b219c001f82fb02991bc60"></a><!-- doxytag: member="pppoe.c::receive_packet" ref="g94e5d5c2a8b219c001f82fb02991bc60" args="(int fd, PPPoEPacket *pkt, size_t *size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int receive_packet </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>fd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> * </td> <td class="paramname"> <em>pkt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t * </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g7e3d98da756c2c4377442dfa656a22ca"></a><!-- doxytag: member="pppoe.c::send_packet" ref="g7e3d98da756c2c4377442dfa656a22ca" args="(int fd, PPPoEPacket *pkt, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int send_packet </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>fd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEPacket.html">PPPoEPacket</a> * </td> <td class="paramname"> <em>pkt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g4e263025a0fa9644a8ba8cf581fd9415"></a><!-- doxytag: member="pppoe.c::send_padi" ref="g4e263025a0fa9644a8ba8cf581fd9415" args="(int n, PPPoEConnection *conns)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int send_padi </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conns</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gc6fc1cf62580afa717f7470ab2359ccd"></a><!-- doxytag: member="pppoe.c::wait_for_pado" ref="gc6fc1cf62580afa717f7470ab2359ccd" args="(int n, PPPoEConnection *conns)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int wait_for_pado </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structPPPoEConnection.html">PPPoEConnection</a> * </td> <td class="paramname"> <em>conns</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> </body></html>