aboutsummaryrefslogtreecommitdiffstats
path: root/viensamoi/contrib/lorcon.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--viensamoi/contrib/lorcon.py1196
1 files changed, 1196 insertions, 0 deletions
diff --git a/viensamoi/contrib/lorcon.py b/viensamoi/contrib/lorcon.py
new file mode 100644
index 0000000..3fc10ed
--- /dev/null
+++ b/viensamoi/contrib/lorcon.py
@@ -0,0 +1,1196 @@
+
+
+
+<!DOCTYPE html>
+<html>
+ <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
+ <meta charset='utf-8'>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <title>pylorcon2/lorcon.py at master · tom5760/pylorcon2 · GitHub</title>
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
+ <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
+ <link rel="apple-touch-icon-precomposed" sizes="57x57" href="apple-touch-icon-114.png" />
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="apple-touch-icon-114.png" />
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="apple-touch-icon-144.png" />
+ <link rel="apple-touch-icon-precomposed" sizes="144x144" href="apple-touch-icon-144.png" />
+
+
+
+ <link rel="icon" type="image/x-icon" href="/favicon.ico" />
+
+ <meta content="authenticity_token" name="csrf-param" />
+<meta content="a/+CS7XkSTudNEjssNNCLMJkFO3of8Rf/RQ5Kus7vH4=" name="csrf-token" />
+
+ <link href="https://a248.e.akamai.net/assets.github.com/assets/github-36a0afb0bc0d9079bbab35633c1afa08b2770e8e.css" media="screen" rel="stylesheet" type="text/css" />
+ <link href="https://a248.e.akamai.net/assets.github.com/assets/github2-7946f4d01acfeee756eec06de2170a251980f3eb.css" media="screen" rel="stylesheet" type="text/css" />
+
+
+
+ <script src="https://a248.e.akamai.net/assets.github.com/assets/frameworks-974473a941a983b46f11833dc8ffba8414698ff7.js" type="text/javascript"></script>
+ <script src="https://a248.e.akamai.net/assets.github.com/assets/github-11a2a50ba3ff082531d4224595a43f7ee24df6ed.js" type="text/javascript"></script>
+
+
+ <link rel='permalink' href='/tom5760/pylorcon2/blob/aeb74d138e201448c5aa8be24638111fd0e68886/lorcon.py'>
+ <meta property="og:title" content="pylorcon2"/>
+ <meta property="og:type" content="githubog:gitrepository"/>
+ <meta property="og:url" content="https://github.com/tom5760/pylorcon2"/>
+ <meta property="og:image" content="https://a248.e.akamai.net/assets.github.com/images/gravatars/gravatar-user-420.png?1345673561"/>
+ <meta property="og:site_name" content="GitHub"/>
+ <meta property="og:description" content="Pure Python wrapper for the LORCON library. Contribute to pylorcon2 development by creating an account on GitHub."/>
+
+ <meta name="description" content="Pure Python wrapper for the LORCON library. Contribute to pylorcon2 development by creating an account on GitHub." />
+ <link href="https://github.com/tom5760/pylorcon2/commits/master.atom" rel="alternate" title="Recent Commits to pylorcon2:master" type="application/atom+xml" />
+
+ </head>
+
+
+ <body class="logged_out page-blob vis-public env-production ">
+ <div id="wrapper">
+
+
+
+
+
+
+ <div id="header" class="true clearfix">
+ <div class="container clearfix">
+ <a class="site-logo " href="https://github.com/">
+ <img alt="GitHub" class="github-logo-4x" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x.png?1340659561" />
+ <img alt="GitHub" class="github-logo-4x-hover" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x-hover.png?1340659561" />
+ </a>
+
+
+ <!--
+ make sure to use fully qualified URLs here since this nav
+ is used on error pages on other domains
+ -->
+ <ul class="top-nav logged_out">
+ <li class="pricing"><a href="https://github.com/plans">Signup and Pricing</a></li>
+ <li class="explore"><a href="https://github.com/explore">Explore GitHub</a></li>
+ <li class="features"><a href="https://github.com/features">Features</a></li>
+ <li class="blog"><a href="https://github.com/blog">Blog</a></li>
+ <li class="login"><a href="https://github.com/login?return_to=%2Ftom5760%2Fpylorcon2%2Fblob%2Fmaster%2Florcon.py">Sign in</a></li>
+ </ul>
+
+
+
+
+ </div>
+ </div>
+
+
+
+
+
+
+ <div class="site hfeed" itemscope itemtype="http://schema.org/WebPage">
+ <div class="hentry">
+
+ <div class="pagehead repohead instapaper_ignore readability-menu">
+ <div class="container">
+ <div class="title-actions-bar">
+
+
+
+ <ul class="pagehead-actions">
+
+
+ <li>
+ <span class="star-button"><a href="/login?return_to=%2Ftom5760%2Fpylorcon2" class="minibutton js-toggler-target entice tooltipped leftwards" title="You must be signed in to use this feature" rel="nofollow"><span class="mini-icon mini-icon-star"></span>Star</a><a class="social-count js-social-count" href="/tom5760/pylorcon2/stargazers">3</a></span>
+ </li>
+ <li>
+ <a href="/login?return_to=%2Ftom5760%2Fpylorcon2" class="minibutton js-toggler-target fork-button entice tooltipped leftwards" title="You must be signed in to fork a repository" rel="nofollow"><span class="mini-icon mini-icon-fork"></span>Fork</a><a href="/tom5760/pylorcon2/network" class="social-count">1</a>
+ </li>
+ </ul>
+
+ <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
+ <span class="repo-label"><span>public</span></span>
+ <span class="mega-icon mega-icon-public-repo"></span>
+ <span class="author vcard">
+ <a href="/tom5760" class="url fn" itemprop="url" rel="author">
+ <span itemprop="title">tom5760</span>
+ </a></span> /
+ <strong><a href="/tom5760/pylorcon2" class="js-current-repository">pylorcon2</a></strong>
+ </h1>
+ </div>
+
+
+
+ <ul class="tabs">
+ <li><a href="/tom5760/pylorcon2" class="selected" highlight="repo_sourcerepo_downloadsrepo_commitsrepo_tagsrepo_branches">Code</a></li>
+ <li><a href="/tom5760/pylorcon2/network" highlight="repo_network">Network</a></li>
+ <li><a href="/tom5760/pylorcon2/pulls" highlight="repo_pulls">Pull Requests <span class='counter'>0</span></a></li>
+
+ <li><a href="/tom5760/pylorcon2/issues" highlight="repo_issues">Issues <span class='counter'>0</span></a></li>
+
+
+
+ <li><a href="/tom5760/pylorcon2/graphs" highlight="repo_graphsrepo_contributors">Graphs</a></li>
+
+
+ </ul>
+
+<div class="frame frame-center tree-finder" style="display:none"
+ data-tree-list-url="/tom5760/pylorcon2/tree-list/aeb74d138e201448c5aa8be24638111fd0e68886"
+ data-blob-url-prefix="/tom5760/pylorcon2/blob/aeb74d138e201448c5aa8be24638111fd0e68886"
+ >
+
+ <div class="breadcrumb">
+ <span class="bold"><a href="/tom5760/pylorcon2">pylorcon2</a></span> /
+ <input class="tree-finder-input js-navigation-enable" type="text" name="query" autocomplete="off" spellcheck="false">
+ </div>
+
+ <div class="octotip">
+ <p>
+ <a href="/tom5760/pylorcon2/dismiss-tree-finder-help" class="dismiss js-dismiss-tree-list-help" title="Hide this notice forever" rel="nofollow">Dismiss</a>
+ <span class="bold">Octotip:</span> You've activated the <em>file finder</em>
+ by pressing <span class="kbd">t</span> Start typing to filter the
+ file list. Use <span class="kbd badmono">↑</span> and
+ <span class="kbd badmono">↓</span> to navigate,
+ <span class="kbd">enter</span> to view files.
+ </p>
+ </div>
+
+ <table class="tree-browser css-truncate" cellpadding="0" cellspacing="0">
+ <tr class="js-header"><th>&nbsp;</th><th>name</th></tr>
+ <tr class="js-no-results no-results" style="display: none">
+ <th colspan="2">No matching files</th>
+ </tr>
+ <tbody class="js-results-list js-navigation-container">
+ </tbody>
+ </table>
+</div>
+
+<div id="jump-to-line" style="display:none">
+ <h2>Jump to Line</h2>
+ <form accept-charset="UTF-8">
+ <input class="textfield" type="text">
+ <div class="full-button">
+ <button type="submit" class="classy">
+ Go
+ </button>
+ </div>
+ </form>
+</div>
+
+
+<div class="tabnav">
+
+ <span class="tabnav-right">
+ <ul class="tabnav-tabs">
+ <li><a href="/tom5760/pylorcon2/tags" class="tabnav-tab" highlight="repo_tags">Tags <span class="counter blank">0</span></a></li>
+ <li><a href="/tom5760/pylorcon2/downloads" class="tabnav-tab" highlight="repo_downloads">Downloads <span class="counter blank">0</span></a></li>
+ </ul>
+
+ </span>
+
+ <div class="tabnav-widget scope">
+
+ <div class="context-menu-container js-menu-container js-context-menu">
+ <a href="#"
+ class="minibutton bigger switcher js-menu-target js-commitish-button btn-branch repo-tree"
+ data-hotkey="w"
+ data-master-branch="master"
+ data-ref="master">
+ <span><em class="mini-icon mini-icon-branch"></em><i>branch:</i> master</span>
+ </a>
+
+ <div class="context-pane commitish-context js-menu-content">
+ <a href="javascript:;" class="close js-menu-close"><span class="mini-icon mini-icon-remove-close"></span></a>
+ <div class="context-title">Switch branches/tags</div>
+ <div class="context-body pane-selector commitish-selector js-navigation-container">
+ <div class="filterbar">
+ <input type="text" id="context-commitish-filter-field" class="js-navigation-enable" placeholder="Filter branches/tags" data-filterable />
+ <ul class="tabs">
+ <li><a href="#" data-filter="branches" class="selected">Branches</a></li>
+ <li><a href="#" data-filter="tags">Tags</a></li>
+ </ul>
+ </div>
+
+ <div class="js-filter-tab js-filter-branches" data-filterable-for="context-commitish-filter-field" data-filterable-type=substring>
+ <div class="no-results js-not-filterable">Nothing to show</div>
+ <div class="commitish-item branch-commitish selector-item js-navigation-item js-navigation-target selected">
+ <span class="mini-icon mini-icon-confirm"></span>
+ <h4>
+ <a href="/tom5760/pylorcon2/blob/master/lorcon.py" class="js-navigation-open" data-name="master" rel="nofollow">master</a>
+ </h4>
+ </div>
+ </div>
+
+ <div class="js-filter-tab js-filter-tags filter-tab-empty" style="display:none" data-filterable-for="context-commitish-filter-field" data-filterable-type=substring>
+ <div class="no-results js-not-filterable">Nothing to show</div>
+ </div>
+ </div>
+ </div><!-- /.commitish-context-context -->
+ </div>
+ </div> <!-- /.scope -->
+
+ <ul class="tabnav-tabs">
+ <li><a href="/tom5760/pylorcon2" class="selected tabnav-tab" highlight="repo_source">Files</a></li>
+ <li><a href="/tom5760/pylorcon2/commits/master" class="tabnav-tab" highlight="repo_commits">Commits</a></li>
+ <li><a href="/tom5760/pylorcon2/branches" class="tabnav-tab" highlight="repo_branches" rel="nofollow">Branches <span class="counter ">1</span></a></li>
+ </ul>
+
+</div>
+
+
+
+
+
+
+
+ </div>
+ </div><!-- /.repohead -->
+
+ <div id="js-repo-pjax-container" class="container context-loader-container" data-pjax-container>
+
+
+
+<!-- blob contrib key: blob_contributors:v21:f4f95a111e58268a2641f2dc8ab30914 -->
+<!-- blob contrib frag key: views10/v8/blob_contributors:v21:f4f95a111e58268a2641f2dc8ab30914 -->
+
+<!-- block_view_fragment_key: views10/v8/blob:v21:a1646c94514dd63ae71a09e9cdf6a2bd -->
+
+ <div id="slider">
+
+ <div class="breadcrumb" data-path="lorcon.py/">
+ <b itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/tom5760/pylorcon2/tree/aeb74d138e201448c5aa8be24638111fd0e68886" class="js-rewrite-sha" itemprop="url"><span itemprop="title">pylorcon2</span></a></b> / <strong class="final-path">lorcon.py</strong> <span class="js-clippy mini-icon mini-icon-clippy " data-clipboard-text="lorcon.py" data-copied-hint="copied!" data-copy-hint="copy to clipboard"></span>
+ </div>
+
+
+ <div class="commit file-history-tease js-blob-contributors-content" data-path="lorcon.py/">
+ <img class="main-avatar" height="24" src="https://secure.gravatar.com/avatar/9710de36b9f97bc301f53c042d4fa382?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="24" />
+ <span class="author"><a href="/tom5760">tom5760</a></span>
+ <time class="js-relative-date" datetime="2010-06-03T19:30:12-07:00" title="2010-06-03 19:30:12">June 03, 2010</time>
+ <div class="commit-title">
+ <a href="/tom5760/pylorcon2/commit/aeb74d138e201448c5aa8be24638111fd0e68886" class="message">Initial commit of PyLorcon2.</a>
+ </div>
+
+ <div class="participation">
+ <p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>1</strong> contributor</a></p>
+
+ </div>
+ <div id="blob_contributors_box" style="display:none">
+ <h2>Users on GitHub who have contributed to this file</h2>
+ <ul class="facebox-user-list">
+ <li>
+ <img height="24" src="https://secure.gravatar.com/avatar/9710de36b9f97bc301f53c042d4fa382?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="24" />
+ <a href="/tom5760">tom5760</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+
+ <div class="frames">
+ <div class="frame frame-center" data-path="lorcon.py/" data-permalink-url="/tom5760/pylorcon2/blob/aeb74d138e201448c5aa8be24638111fd0e68886/lorcon.py" data-title="pylorcon2/lorcon.py at master · tom5760/pylorcon2 · GitHub" data-type="blob">
+
+ <div id="files" class="bubble">
+ <div class="file">
+ <div class="meta">
+ <div class="info">
+ <span class="icon"><b class="mini-icon mini-icon-text-file"></b></span>
+ <span class="mode" title="File Mode">file</span>
+ <span>383 lines (282 sloc)</span>
+ <span>13.514 kb</span>
+ </div>
+ <ul class="button-group actions">
+ <li>
+ <a class="grouped-button file-edit-link minibutton bigger lighter js-rewrite-sha" href="/tom5760/pylorcon2/edit/aeb74d138e201448c5aa8be24638111fd0e68886/lorcon.py" data-method="post" rel="nofollow" data-hotkey="e">Edit</a>
+ </li>
+ <li>
+ <a href="/tom5760/pylorcon2/raw/master/lorcon.py" class="minibutton grouped-button bigger lighter" id="raw-url">Raw</a>
+ </li>
+ <li>
+ <a href="/tom5760/pylorcon2/blame/master/lorcon.py" class="minibutton grouped-button bigger lighter">Blame</a>
+ </li>
+ <li>
+ <a href="/tom5760/pylorcon2/commits/master/lorcon.py" class="minibutton grouped-button bigger lighter" rel="nofollow">History</a>
+ </li>
+ </ul>
+ </div>
+ <div class="data type-python">
+ <table cellpadding="0" cellspacing="0" class="lines">
+ <tr>
+ <td>
+ <pre class="line_numbers"><span id="L1" rel="#L1">1</span>
+<span id="L2" rel="#L2">2</span>
+<span id="L3" rel="#L3">3</span>
+<span id="L4" rel="#L4">4</span>
+<span id="L5" rel="#L5">5</span>
+<span id="L6" rel="#L6">6</span>
+<span id="L7" rel="#L7">7</span>
+<span id="L8" rel="#L8">8</span>
+<span id="L9" rel="#L9">9</span>
+<span id="L10" rel="#L10">10</span>
+<span id="L11" rel="#L11">11</span>
+<span id="L12" rel="#L12">12</span>
+<span id="L13" rel="#L13">13</span>
+<span id="L14" rel="#L14">14</span>
+<span id="L15" rel="#L15">15</span>
+<span id="L16" rel="#L16">16</span>
+<span id="L17" rel="#L17">17</span>
+<span id="L18" rel="#L18">18</span>
+<span id="L19" rel="#L19">19</span>
+<span id="L20" rel="#L20">20</span>
+<span id="L21" rel="#L21">21</span>
+<span id="L22" rel="#L22">22</span>
+<span id="L23" rel="#L23">23</span>
+<span id="L24" rel="#L24">24</span>
+<span id="L25" rel="#L25">25</span>
+<span id="L26" rel="#L26">26</span>
+<span id="L27" rel="#L27">27</span>
+<span id="L28" rel="#L28">28</span>
+<span id="L29" rel="#L29">29</span>
+<span id="L30" rel="#L30">30</span>
+<span id="L31" rel="#L31">31</span>
+<span id="L32" rel="#L32">32</span>
+<span id="L33" rel="#L33">33</span>
+<span id="L34" rel="#L34">34</span>
+<span id="L35" rel="#L35">35</span>
+<span id="L36" rel="#L36">36</span>
+<span id="L37" rel="#L37">37</span>
+<span id="L38" rel="#L38">38</span>
+<span id="L39" rel="#L39">39</span>
+<span id="L40" rel="#L40">40</span>
+<span id="L41" rel="#L41">41</span>
+<span id="L42" rel="#L42">42</span>
+<span id="L43" rel="#L43">43</span>
+<span id="L44" rel="#L44">44</span>
+<span id="L45" rel="#L45">45</span>
+<span id="L46" rel="#L46">46</span>
+<span id="L47" rel="#L47">47</span>
+<span id="L48" rel="#L48">48</span>
+<span id="L49" rel="#L49">49</span>
+<span id="L50" rel="#L50">50</span>
+<span id="L51" rel="#L51">51</span>
+<span id="L52" rel="#L52">52</span>
+<span id="L53" rel="#L53">53</span>
+<span id="L54" rel="#L54">54</span>
+<span id="L55" rel="#L55">55</span>
+<span id="L56" rel="#L56">56</span>
+<span id="L57" rel="#L57">57</span>
+<span id="L58" rel="#L58">58</span>
+<span id="L59" rel="#L59">59</span>
+<span id="L60" rel="#L60">60</span>
+<span id="L61" rel="#L61">61</span>
+<span id="L62" rel="#L62">62</span>
+<span id="L63" rel="#L63">63</span>
+<span id="L64" rel="#L64">64</span>
+<span id="L65" rel="#L65">65</span>
+<span id="L66" rel="#L66">66</span>
+<span id="L67" rel="#L67">67</span>
+<span id="L68" rel="#L68">68</span>
+<span id="L69" rel="#L69">69</span>
+<span id="L70" rel="#L70">70</span>
+<span id="L71" rel="#L71">71</span>
+<span id="L72" rel="#L72">72</span>
+<span id="L73" rel="#L73">73</span>
+<span id="L74" rel="#L74">74</span>
+<span id="L75" rel="#L75">75</span>
+<span id="L76" rel="#L76">76</span>
+<span id="L77" rel="#L77">77</span>
+<span id="L78" rel="#L78">78</span>
+<span id="L79" rel="#L79">79</span>
+<span id="L80" rel="#L80">80</span>
+<span id="L81" rel="#L81">81</span>
+<span id="L82" rel="#L82">82</span>
+<span id="L83" rel="#L83">83</span>
+<span id="L84" rel="#L84">84</span>
+<span id="L85" rel="#L85">85</span>
+<span id="L86" rel="#L86">86</span>
+<span id="L87" rel="#L87">87</span>
+<span id="L88" rel="#L88">88</span>
+<span id="L89" rel="#L89">89</span>
+<span id="L90" rel="#L90">90</span>
+<span id="L91" rel="#L91">91</span>
+<span id="L92" rel="#L92">92</span>
+<span id="L93" rel="#L93">93</span>
+<span id="L94" rel="#L94">94</span>
+<span id="L95" rel="#L95">95</span>
+<span id="L96" rel="#L96">96</span>
+<span id="L97" rel="#L97">97</span>
+<span id="L98" rel="#L98">98</span>
+<span id="L99" rel="#L99">99</span>
+<span id="L100" rel="#L100">100</span>
+<span id="L101" rel="#L101">101</span>
+<span id="L102" rel="#L102">102</span>
+<span id="L103" rel="#L103">103</span>
+<span id="L104" rel="#L104">104</span>
+<span id="L105" rel="#L105">105</span>
+<span id="L106" rel="#L106">106</span>
+<span id="L107" rel="#L107">107</span>
+<span id="L108" rel="#L108">108</span>
+<span id="L109" rel="#L109">109</span>
+<span id="L110" rel="#L110">110</span>
+<span id="L111" rel="#L111">111</span>
+<span id="L112" rel="#L112">112</span>
+<span id="L113" rel="#L113">113</span>
+<span id="L114" rel="#L114">114</span>
+<span id="L115" rel="#L115">115</span>
+<span id="L116" rel="#L116">116</span>
+<span id="L117" rel="#L117">117</span>
+<span id="L118" rel="#L118">118</span>
+<span id="L119" rel="#L119">119</span>
+<span id="L120" rel="#L120">120</span>
+<span id="L121" rel="#L121">121</span>
+<span id="L122" rel="#L122">122</span>
+<span id="L123" rel="#L123">123</span>
+<span id="L124" rel="#L124">124</span>
+<span id="L125" rel="#L125">125</span>
+<span id="L126" rel="#L126">126</span>
+<span id="L127" rel="#L127">127</span>
+<span id="L128" rel="#L128">128</span>
+<span id="L129" rel="#L129">129</span>
+<span id="L130" rel="#L130">130</span>
+<span id="L131" rel="#L131">131</span>
+<span id="L132" rel="#L132">132</span>
+<span id="L133" rel="#L133">133</span>
+<span id="L134" rel="#L134">134</span>
+<span id="L135" rel="#L135">135</span>
+<span id="L136" rel="#L136">136</span>
+<span id="L137" rel="#L137">137</span>
+<span id="L138" rel="#L138">138</span>
+<span id="L139" rel="#L139">139</span>
+<span id="L140" rel="#L140">140</span>
+<span id="L141" rel="#L141">141</span>
+<span id="L142" rel="#L142">142</span>
+<span id="L143" rel="#L143">143</span>
+<span id="L144" rel="#L144">144</span>
+<span id="L145" rel="#L145">145</span>
+<span id="L146" rel="#L146">146</span>
+<span id="L147" rel="#L147">147</span>
+<span id="L148" rel="#L148">148</span>
+<span id="L149" rel="#L149">149</span>
+<span id="L150" rel="#L150">150</span>
+<span id="L151" rel="#L151">151</span>
+<span id="L152" rel="#L152">152</span>
+<span id="L153" rel="#L153">153</span>
+<span id="L154" rel="#L154">154</span>
+<span id="L155" rel="#L155">155</span>
+<span id="L156" rel="#L156">156</span>
+<span id="L157" rel="#L157">157</span>
+<span id="L158" rel="#L158">158</span>
+<span id="L159" rel="#L159">159</span>
+<span id="L160" rel="#L160">160</span>
+<span id="L161" rel="#L161">161</span>
+<span id="L162" rel="#L162">162</span>
+<span id="L163" rel="#L163">163</span>
+<span id="L164" rel="#L164">164</span>
+<span id="L165" rel="#L165">165</span>
+<span id="L166" rel="#L166">166</span>
+<span id="L167" rel="#L167">167</span>
+<span id="L168" rel="#L168">168</span>
+<span id="L169" rel="#L169">169</span>
+<span id="L170" rel="#L170">170</span>
+<span id="L171" rel="#L171">171</span>
+<span id="L172" rel="#L172">172</span>
+<span id="L173" rel="#L173">173</span>
+<span id="L174" rel="#L174">174</span>
+<span id="L175" rel="#L175">175</span>
+<span id="L176" rel="#L176">176</span>
+<span id="L177" rel="#L177">177</span>
+<span id="L178" rel="#L178">178</span>
+<span id="L179" rel="#L179">179</span>
+<span id="L180" rel="#L180">180</span>
+<span id="L181" rel="#L181">181</span>
+<span id="L182" rel="#L182">182</span>
+<span id="L183" rel="#L183">183</span>
+<span id="L184" rel="#L184">184</span>
+<span id="L185" rel="#L185">185</span>
+<span id="L186" rel="#L186">186</span>
+<span id="L187" rel="#L187">187</span>
+<span id="L188" rel="#L188">188</span>
+<span id="L189" rel="#L189">189</span>
+<span id="L190" rel="#L190">190</span>
+<span id="L191" rel="#L191">191</span>
+<span id="L192" rel="#L192">192</span>
+<span id="L193" rel="#L193">193</span>
+<span id="L194" rel="#L194">194</span>
+<span id="L195" rel="#L195">195</span>
+<span id="L196" rel="#L196">196</span>
+<span id="L197" rel="#L197">197</span>
+<span id="L198" rel="#L198">198</span>
+<span id="L199" rel="#L199">199</span>
+<span id="L200" rel="#L200">200</span>
+<span id="L201" rel="#L201">201</span>
+<span id="L202" rel="#L202">202</span>
+<span id="L203" rel="#L203">203</span>
+<span id="L204" rel="#L204">204</span>
+<span id="L205" rel="#L205">205</span>
+<span id="L206" rel="#L206">206</span>
+<span id="L207" rel="#L207">207</span>
+<span id="L208" rel="#L208">208</span>
+<span id="L209" rel="#L209">209</span>
+<span id="L210" rel="#L210">210</span>
+<span id="L211" rel="#L211">211</span>
+<span id="L212" rel="#L212">212</span>
+<span id="L213" rel="#L213">213</span>
+<span id="L214" rel="#L214">214</span>
+<span id="L215" rel="#L215">215</span>
+<span id="L216" rel="#L216">216</span>
+<span id="L217" rel="#L217">217</span>
+<span id="L218" rel="#L218">218</span>
+<span id="L219" rel="#L219">219</span>
+<span id="L220" rel="#L220">220</span>
+<span id="L221" rel="#L221">221</span>
+<span id="L222" rel="#L222">222</span>
+<span id="L223" rel="#L223">223</span>
+<span id="L224" rel="#L224">224</span>
+<span id="L225" rel="#L225">225</span>
+<span id="L226" rel="#L226">226</span>
+<span id="L227" rel="#L227">227</span>
+<span id="L228" rel="#L228">228</span>
+<span id="L229" rel="#L229">229</span>
+<span id="L230" rel="#L230">230</span>
+<span id="L231" rel="#L231">231</span>
+<span id="L232" rel="#L232">232</span>
+<span id="L233" rel="#L233">233</span>
+<span id="L234" rel="#L234">234</span>
+<span id="L235" rel="#L235">235</span>
+<span id="L236" rel="#L236">236</span>
+<span id="L237" rel="#L237">237</span>
+<span id="L238" rel="#L238">238</span>
+<span id="L239" rel="#L239">239</span>
+<span id="L240" rel="#L240">240</span>
+<span id="L241" rel="#L241">241</span>
+<span id="L242" rel="#L242">242</span>
+<span id="L243" rel="#L243">243</span>
+<span id="L244" rel="#L244">244</span>
+<span id="L245" rel="#L245">245</span>
+<span id="L246" rel="#L246">246</span>
+<span id="L247" rel="#L247">247</span>
+<span id="L248" rel="#L248">248</span>
+<span id="L249" rel="#L249">249</span>
+<span id="L250" rel="#L250">250</span>
+<span id="L251" rel="#L251">251</span>
+<span id="L252" rel="#L252">252</span>
+<span id="L253" rel="#L253">253</span>
+<span id="L254" rel="#L254">254</span>
+<span id="L255" rel="#L255">255</span>
+<span id="L256" rel="#L256">256</span>
+<span id="L257" rel="#L257">257</span>
+<span id="L258" rel="#L258">258</span>
+<span id="L259" rel="#L259">259</span>
+<span id="L260" rel="#L260">260</span>
+<span id="L261" rel="#L261">261</span>
+<span id="L262" rel="#L262">262</span>
+<span id="L263" rel="#L263">263</span>
+<span id="L264" rel="#L264">264</span>
+<span id="L265" rel="#L265">265</span>
+<span id="L266" rel="#L266">266</span>
+<span id="L267" rel="#L267">267</span>
+<span id="L268" rel="#L268">268</span>
+<span id="L269" rel="#L269">269</span>
+<span id="L270" rel="#L270">270</span>
+<span id="L271" rel="#L271">271</span>
+<span id="L272" rel="#L272">272</span>
+<span id="L273" rel="#L273">273</span>
+<span id="L274" rel="#L274">274</span>
+<span id="L275" rel="#L275">275</span>
+<span id="L276" rel="#L276">276</span>
+<span id="L277" rel="#L277">277</span>
+<span id="L278" rel="#L278">278</span>
+<span id="L279" rel="#L279">279</span>
+<span id="L280" rel="#L280">280</span>
+<span id="L281" rel="#L281">281</span>
+<span id="L282" rel="#L282">282</span>
+<span id="L283" rel="#L283">283</span>
+<span id="L284" rel="#L284">284</span>
+<span id="L285" rel="#L285">285</span>
+<span id="L286" rel="#L286">286</span>
+<span id="L287" rel="#L287">287</span>
+<span id="L288" rel="#L288">288</span>
+<span id="L289" rel="#L289">289</span>
+<span id="L290" rel="#L290">290</span>
+<span id="L291" rel="#L291">291</span>
+<span id="L292" rel="#L292">292</span>
+<span id="L293" rel="#L293">293</span>
+<span id="L294" rel="#L294">294</span>
+<span id="L295" rel="#L295">295</span>
+<span id="L296" rel="#L296">296</span>
+<span id="L297" rel="#L297">297</span>
+<span id="L298" rel="#L298">298</span>
+<span id="L299" rel="#L299">299</span>
+<span id="L300" rel="#L300">300</span>
+<span id="L301" rel="#L301">301</span>
+<span id="L302" rel="#L302">302</span>
+<span id="L303" rel="#L303">303</span>
+<span id="L304" rel="#L304">304</span>
+<span id="L305" rel="#L305">305</span>
+<span id="L306" rel="#L306">306</span>
+<span id="L307" rel="#L307">307</span>
+<span id="L308" rel="#L308">308</span>
+<span id="L309" rel="#L309">309</span>
+<span id="L310" rel="#L310">310</span>
+<span id="L311" rel="#L311">311</span>
+<span id="L312" rel="#L312">312</span>
+<span id="L313" rel="#L313">313</span>
+<span id="L314" rel="#L314">314</span>
+<span id="L315" rel="#L315">315</span>
+<span id="L316" rel="#L316">316</span>
+<span id="L317" rel="#L317">317</span>
+<span id="L318" rel="#L318">318</span>
+<span id="L319" rel="#L319">319</span>
+<span id="L320" rel="#L320">320</span>
+<span id="L321" rel="#L321">321</span>
+<span id="L322" rel="#L322">322</span>
+<span id="L323" rel="#L323">323</span>
+<span id="L324" rel="#L324">324</span>
+<span id="L325" rel="#L325">325</span>
+<span id="L326" rel="#L326">326</span>
+<span id="L327" rel="#L327">327</span>
+<span id="L328" rel="#L328">328</span>
+<span id="L329" rel="#L329">329</span>
+<span id="L330" rel="#L330">330</span>
+<span id="L331" rel="#L331">331</span>
+<span id="L332" rel="#L332">332</span>
+<span id="L333" rel="#L333">333</span>
+<span id="L334" rel="#L334">334</span>
+<span id="L335" rel="#L335">335</span>
+<span id="L336" rel="#L336">336</span>
+<span id="L337" rel="#L337">337</span>
+<span id="L338" rel="#L338">338</span>
+<span id="L339" rel="#L339">339</span>
+<span id="L340" rel="#L340">340</span>
+<span id="L341" rel="#L341">341</span>
+<span id="L342" rel="#L342">342</span>
+<span id="L343" rel="#L343">343</span>
+<span id="L344" rel="#L344">344</span>
+<span id="L345" rel="#L345">345</span>
+<span id="L346" rel="#L346">346</span>
+<span id="L347" rel="#L347">347</span>
+<span id="L348" rel="#L348">348</span>
+<span id="L349" rel="#L349">349</span>
+<span id="L350" rel="#L350">350</span>
+<span id="L351" rel="#L351">351</span>
+<span id="L352" rel="#L352">352</span>
+<span id="L353" rel="#L353">353</span>
+<span id="L354" rel="#L354">354</span>
+<span id="L355" rel="#L355">355</span>
+<span id="L356" rel="#L356">356</span>
+<span id="L357" rel="#L357">357</span>
+<span id="L358" rel="#L358">358</span>
+<span id="L359" rel="#L359">359</span>
+<span id="L360" rel="#L360">360</span>
+<span id="L361" rel="#L361">361</span>
+<span id="L362" rel="#L362">362</span>
+<span id="L363" rel="#L363">363</span>
+<span id="L364" rel="#L364">364</span>
+<span id="L365" rel="#L365">365</span>
+<span id="L366" rel="#L366">366</span>
+<span id="L367" rel="#L367">367</span>
+<span id="L368" rel="#L368">368</span>
+<span id="L369" rel="#L369">369</span>
+<span id="L370" rel="#L370">370</span>
+<span id="L371" rel="#L371">371</span>
+<span id="L372" rel="#L372">372</span>
+<span id="L373" rel="#L373">373</span>
+<span id="L374" rel="#L374">374</span>
+<span id="L375" rel="#L375">375</span>
+<span id="L376" rel="#L376">376</span>
+<span id="L377" rel="#L377">377</span>
+<span id="L378" rel="#L378">378</span>
+<span id="L379" rel="#L379">379</span>
+<span id="L380" rel="#L380">380</span>
+<span id="L381" rel="#L381">381</span>
+<span id="L382" rel="#L382">382</span>
+</pre>
+ </td>
+ <td width="100%">
+ <div class="highlight"><pre><div class='line' id='LC1'><span class="c">#!/usr/bin/env python</span></div><div class='line' id='LC2'><span class="sd">&#39;&#39;&#39;</span></div><div class='line' id='LC3'><span class="sd">pylorcon2 - Python wrapper for LORCON 2</span></div><div class='line' id='LC4'><span class="sd">By: Tom Wambold &lt;tom5760@gmail.com&gt;</span></div><div class='line' id='LC5'><span class="sd">Home: http://github.com/tom5760/pylorcon2/</span></div><div class='line' id='LC6'><span class="sd">LORCON: http://802.11ninja.net/</span></div><div class='line' id='LC7'><br/></div><div class='line' id='LC8'><span class="sd">&#39;&#39;&#39;</span></div><div class='line' id='LC9'><br/></div><div class='line' id='LC10'><span class="kn">import</span> <span class="nn">ctypes</span></div><div class='line' id='LC11'><span class="kn">from</span> <span class="nn">ctypes.util</span> <span class="kn">import</span> <span class="n">find_library</span></div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'><span class="k">class</span> <span class="nc">LorconError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> <span class="k">pass</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="k">class</span> <span class="nc">StructLorcon</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">Structure</span><span class="p">):</span> <span class="k">pass</span></div><div class='line' id='LC16'><br/></div><div class='line' id='LC17'><span class="c"># Function Pointers</span></div><div class='line' id='LC18'><span class="n">LORCON_DRV_INIT</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">))</span></div><div class='line' id='LC19'><span class="n">LORCON_DRV_PROBE</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">)</span></div><div class='line' id='LC20'><br/></div><div class='line' id='LC21'><span class="c"># Forward declare this struct</span></div><div class='line' id='LC22'><span class="k">class</span> <span class="nc">StructDriver</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">Structure</span><span class="p">):</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">pass</span></div><div class='line' id='LC24'><br/></div><div class='line' id='LC25'><span class="c"># We need to do this since this struct references itself</span></div><div class='line' id='LC26'><span class="n">StructDriver</span><span class="o">.</span><span class="n">_fields_</span> <span class="o">=</span> <span class="p">(</span></div><div class='line' id='LC27'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="s">&#39;name&#39;</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">),</span></div><div class='line' id='LC28'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="s">&#39;details&#39;</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">),</span></div><div class='line' id='LC29'><br/></div><div class='line' id='LC30'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="s">&#39;init_func&#39;</span><span class="p">,</span> <span class="n">LORCON_DRV_INIT</span><span class="p">),</span></div><div class='line' id='LC31'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="s">&#39;probe_func&#39;</span><span class="p">,</span> <span class="n">LORCON_DRV_PROBE</span><span class="p">),</span></div><div class='line' id='LC32'><br/></div><div class='line' id='LC33'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="s">&#39;next&#39;</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructDriver</span><span class="p">)),</span></div><div class='line' id='LC34'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">)</span></div><div class='line' id='LC35'><br/></div><div class='line' id='LC36'><span class="k">class</span> <span class="nc">Lorcon</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span></div><div class='line' id='LC37'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Represents the LORCON library.&#39;</span></div><div class='line' id='LC38'><br/></div><div class='line' id='LC39'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lib_path</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span></div><div class='line' id='LC40'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">&#39;&#39;&#39;Instantiate the LORCON library.</span></div><div class='line' id='LC41'><br/></div><div class='line' id='LC42'><span class="sd"> lib_path - Path to LORCON shared library. If None, it is autodetected.</span></div><div class='line' id='LC43'><br/></div><div class='line' id='LC44'><span class="sd"> &#39;&#39;&#39;</span></div><div class='line' id='LC45'><br/></div><div class='line' id='LC46'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="n">lib_path</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span></div><div class='line' id='LC47'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># Look for -lorcon2</span></div><div class='line' id='LC48'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">lib_path</span> <span class="o">=</span> <span class="n">find_library</span><span class="p">(</span><span class="s">&#39;orcon2&#39;</span><span class="p">)</span></div><div class='line' id='LC49'><br/></div><div class='line' id='LC50'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cdll</span><span class="o">.</span><span class="n">LoadLibrary</span><span class="p">(</span><span class="n">lib_path</span><span class="p">)</span></div><div class='line' id='LC51'><br/></div><div class='line' id='LC52'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># Set argument and return types for functions</span></div><div class='line' id='LC53'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_list_drivers</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC54'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_list_drivers</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructDriver</span><span class="p">)</span></div><div class='line' id='LC55'><br/></div><div class='line' id='LC56'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_find_driver</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">]</span></div><div class='line' id='LC57'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_find_driver</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructDriver</span><span class="p">)</span></div><div class='line' id='LC58'><br/></div><div class='line' id='LC59'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_auto_driver</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">]</span></div><div class='line' id='LC60'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_auto_driver</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructDriver</span><span class="p">)</span></div><div class='line' id='LC61'><br/></div><div class='line' id='LC62'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_free_driver_list</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructDriver</span><span class="p">)]</span></div><div class='line' id='LC63'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_free_driver_list</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC64'><br/></div><div class='line' id='LC65'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_create</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">,</span></div><div class='line' id='LC66'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructDriver</span><span class="p">)]</span></div><div class='line' id='LC67'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_create</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)</span></div><div class='line' id='LC68'><br/></div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_free</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_free</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC71'><br/></div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_error</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_error</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span></div><div class='line' id='LC74'><br/></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_timeout</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_timeout</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC77'><br/></div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_timeout</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span><span class="p">]</span></div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_timeout</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC81'><br/></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_timeout</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC83'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_timeout</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC84'><br/></div><div class='line' id='LC85'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_inject</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC86'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_inject</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC87'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_inject</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC88'><br/></div><div class='line' id='LC89'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_monitor</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC90'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_monitor</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_monitor</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC92'><br/></div><div class='line' id='LC93'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_vap</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC94'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_vap</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span></div><div class='line' id='LC95'><br/></div><div class='line' id='LC96'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_vap</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC97'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">]</span></div><div class='line' id='LC98'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_vap</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC99'><br/></div><div class='line' id='LC100'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_capiface</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC101'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_capiface</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span></div><div class='line' id='LC102'><br/></div><div class='line' id='LC103'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_driver_name</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span></div><div class='line' id='LC104'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC105'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_driver_name</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span></div><div class='line' id='LC106'><br/></div><div class='line' id='LC107'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: These are not implemented in Lorcon2 yet</span></div><div class='line' id='LC108'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_get_datalink.argtypes = [ctypes.POINTER(StructLorcon)]</span></div><div class='line' id='LC109'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_get_datalink.restype = ctypes.c_int</span></div><div class='line' id='LC110'><br/></div><div class='line' id='LC111'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_set_datalink.argtypes = [ctypes.POINTER(StructLorcon),</span></div><div class='line' id='LC112'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># ctypes.c_int]</span></div><div class='line' id='LC113'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_set_datalink.restype = ctypes.c_int</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_set_datalink.errcheck = self._errcheck_int</span></div><div class='line' id='LC115'><br/></div><div class='line' id='LC116'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_channel</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC117'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_channel</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC118'><br/></div><div class='line' id='LC119'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_channel</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC120'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span><span class="p">]</span></div><div class='line' id='LC121'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_channel</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC122'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_channel</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC123'><br/></div><div class='line' id='LC124'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_hwmac</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC125'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint8</span><span class="p">))]</span></div><div class='line' id='LC126'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_hwmac</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC127'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_hwmac</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC128'><br/></div><div class='line' id='LC129'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_hwmac</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC130'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint8</span><span class="p">)]</span></div><div class='line' id='LC131'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_hwmac</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC132'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_hwmac</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC133'><br/></div><div class='line' id='LC134'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_pcap</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC135'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: Maybe make a real ctypes type for this? Should be struct pcap_t</span></div><div class='line' id='LC136'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_pcap</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span></div><div class='line' id='LC137'><br/></div><div class='line' id='LC138'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_selectable_fd</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span></div><div class='line' id='LC139'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">)]</span></div><div class='line' id='LC140'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_selectable_fd</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC141'><br/></div><div class='line' id='LC142'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: lorcon_next_ex goes here</span></div><div class='line' id='LC143'><br/></div><div class='line' id='LC144'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_filter</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC145'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">]</span></div><div class='line' id='LC146'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_filter</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC147'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_filter</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC148'><br/></div><div class='line' id='LC149'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: lorcon_set_compiled_filter goes here</span></div><div class='line' id='LC150'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: lorcon_pcap_loop goes here</span></div><div class='line' id='LC151'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: lorcon_pcap_dispatch goes here</span></div><div class='line' id='LC152'><br/></div><div class='line' id='LC153'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_breakloop</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC154'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_breakloop</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC155'><br/></div><div class='line' id='LC156'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: Wrap the lorcon_packet stuff</span></div><div class='line' id='LC157'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_inject.argtypes = [ctypes.POINTER(StructLorcon),</span></div><div class='line' id='LC158'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># ctypes.POINTER(StructPacket)]</span></div><div class='line' id='LC159'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_inject.restype = ctypes.c_int</span></div><div class='line' id='LC160'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#self.lib.lorcon_inject.errcheck = self._errcheck_int</span></div><div class='line' id='LC161'><br/></div><div class='line' id='LC162'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_send_bytes</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC163'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</span><span class="p">)]</span></div><div class='line' id='LC164'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_send_bytes</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC165'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_send_bytes</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC166'><br/></div><div class='line' id='LC167'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_version</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC168'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_version</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulong</span></div><div class='line' id='LC169'><br/></div><div class='line' id='LC170'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_add_wepkey</span><span class="o">.</span><span class="n">argtypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">StructLorcon</span><span class="p">),</span></div><div class='line' id='LC171'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</span><span class="p">)]</span></div><div class='line' id='LC172'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_add_wepkey</span><span class="o">.</span><span class="n">restype</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_int</span></div><div class='line' id='LC173'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_add_wepkey</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_errcheck_int</span></div><div class='line' id='LC174'><br/></div><div class='line' id='LC175'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">list_drivers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC176'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;List all drivers LORCON is compiled with.&#39;</span></div><div class='line' id='LC177'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">_generate_driver_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_list_drivers</span><span class="p">())</span></div><div class='line' id='LC178'><br/></div><div class='line' id='LC179'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">find_driver</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">driver</span><span class="p">):</span></div><div class='line' id='LC180'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">Driver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_find_driver</span><span class="p">(</span><span class="n">driver</span><span class="p">))</span></div><div class='line' id='LC181'><br/></div><div class='line' id='LC182'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">auto_driver</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="p">):</span></div><div class='line' id='LC183'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">Driver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_auto_driver</span><span class="p">(</span><span class="n">interface</span><span class="p">))</span></div><div class='line' id='LC184'><br/></div><div class='line' id='LC185'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">interface</span><span class="p">,</span> <span class="n">driver</span><span class="p">):</span></div><div class='line' id='LC186'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">Context</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_create</span><span class="p">(</span><span class="n">interface</span><span class="p">,</span> <span class="n">driver</span><span class="p">))</span></div><div class='line' id='LC187'><br/></div><div class='line' id='LC188'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">_errcheck_int</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span></div><div class='line' id='LC189'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Raises an exception if the return value is less than 0&#39;</span></div><div class='line' id='LC190'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span></div><div class='line' id='LC191'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">raise</span> <span class="n">LorconError</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_error</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span></div><div class='line' id='LC192'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">result</span></div><div class='line' id='LC193'><br/></div><div class='line' id='LC194'><span class="k">class</span> <span class="nc">Driver</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span></div><div class='line' id='LC195'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">&#39;&#39;&#39;Represents a driver struct.</span></div><div class='line' id='LC196'><br/></div><div class='line' id='LC197'><span class="sd"> Automatically frees memory when this object is garbage collected.</span></div><div class='line' id='LC198'><br/></div><div class='line' id='LC199'><span class="sd"> &#39;&#39;&#39;</span></div><div class='line' id='LC200'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lib</span><span class="p">,</span> <span class="n">ptr</span><span class="p">):</span></div><div class='line' id='LC201'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">&#39;&#39;&#39;lib = reference to the lorcon library</span></div><div class='line' id='LC202'><span class="sd"> ptr = ctypes pointer to a StructDriver</span></div><div class='line' id='LC203'><br/></div><div class='line' id='LC204'><span class="sd"> &#39;&#39;&#39;</span></div><div class='line' id='LC205'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span> <span class="o">=</span> <span class="n">lib</span></div><div class='line' id='LC206'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">_as_parameter_</span> <span class="o">=</span> <span class="n">ptr</span></div><div class='line' id='LC207'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">contents</span> <span class="o">=</span> <span class="n">ptr</span><span class="o">.</span><span class="n">contents</span></div><div class='line' id='LC208'><br/></div><div class='line' id='LC209'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC210'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_free_driver_list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div><div class='line' id='LC211'><br/></div><div class='line' id='LC212'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC213'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span></div><div class='line' id='LC214'><br/></div><div class='line' id='LC215'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">name</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">name</span><span class="p">)</span></div><div class='line' id='LC216'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">details</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">details</span><span class="p">)</span></div><div class='line' id='LC217'><br/></div><div class='line' id='LC218'><span class="k">class</span> <span class="nc">Context</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span></div><div class='line' id='LC219'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Represents a LORCON context struct.&#39;</span></div><div class='line' id='LC220'><br/></div><div class='line' id='LC221'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lib</span><span class="p">,</span> <span class="n">ptr</span><span class="p">):</span></div><div class='line' id='LC222'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">&#39;&#39;&#39;lib = reference to the lorcon library</span></div><div class='line' id='LC223'><span class="sd"> ptr = ctypes pointer to a StructLorcon</span></div><div class='line' id='LC224'><br/></div><div class='line' id='LC225'><span class="sd"> &#39;&#39;&#39;</span></div><div class='line' id='LC226'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span> <span class="o">=</span> <span class="n">lib</span></div><div class='line' id='LC227'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">_as_parameter_</span> <span class="o">=</span> <span class="n">ptr</span></div><div class='line' id='LC228'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">contents</span> <span class="o">=</span> <span class="n">ptr</span><span class="o">.</span><span class="n">contents</span></div><div class='line' id='LC229'><br/></div><div class='line' id='LC230'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC231'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_free</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div><div class='line' id='LC232'><br/></div><div class='line' id='LC233'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">open_inject</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC234'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Open an interface for inject.&#39;</span></div><div class='line' id='LC235'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_inject</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div><div class='line' id='LC236'><br/></div><div class='line' id='LC237'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">open_monitor</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC238'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Open an interface in monitor mode (may also enable injection).&#39;</span></div><div class='line' id='LC239'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_monitor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div><div class='line' id='LC240'><br/></div><div class='line' id='LC241'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">open_injmon</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC242'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Open an interface in inject+monitor mode.&#39;</span></div><div class='line' id='LC243'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_open_injmon</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div><div class='line' id='LC244'><br/></div><div class='line' id='LC245'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC246'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Close interface.&#39;</span></div><div class='line' id='LC247'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div><div class='line' id='LC248'><br/></div><div class='line' id='LC249'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">fileno</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC250'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;For use in the &quot;select&quot; package&#39;</span></div><div class='line' id='LC251'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">selectable_fd</span></div><div class='line' id='LC252'><br/></div><div class='line' id='LC253'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">next_ex</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC254'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class='line' id='LC255'><br/></div><div class='line' id='LC256'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">set_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">filter</span><span class="p">):</span></div><div class='line' id='LC257'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">filter</span><span class="p">)</span></div><div class='line' id='LC258'><br/></div><div class='line' id='LC259'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">set_compiled_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">filter</span><span class="p">):</span></div><div class='line' id='LC260'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class='line' id='LC261'><br/></div><div class='line' id='LC262'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">pcap_loop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span></div><div class='line' id='LC263'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class='line' id='LC264'><br/></div><div class='line' id='LC265'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">pcap_dispatch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span></div><div class='line' id='LC266'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class='line' id='LC267'><br/></div><div class='line' id='LC268'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">pcap_breakloop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC269'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_breakloop</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div><div class='line' id='LC270'><br/></div><div class='line' id='LC271'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">inject</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">packet</span><span class="p">):</span></div><div class='line' id='LC272'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: Wrap the lorcon_packet stuff</span></div><div class='line' id='LC273'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class='line' id='LC274'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#return self.lib.lorcon_inject(self, packet)</span></div><div class='line' id='LC275'><br/></div><div class='line' id='LC276'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">send_bytes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span></div><div class='line' id='LC277'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))(</span><span class="o">*</span><span class="p">[</span><span class="nb">ord</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">data</span><span class="p">])</span></div><div class='line' id='LC278'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_send_bytes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n">buf</span><span class="p">)</span></div><div class='line' id='LC279'><br/></div><div class='line' id='LC280'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">add_wepkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bssid</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span></div><div class='line' id='LC281'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_add_wepkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bssid</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">))</span></div><div class='line' id='LC282'><br/></div><div class='line' id='LC283'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># Properties (Replaces getters/setters</span></div><div class='line' id='LC284'><br/></div><div class='line' id='LC285'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">version</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_version</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span></div><div class='line' id='LC286'><br/></div><div class='line' id='LC287'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">error</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_error</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span></div><div class='line' id='LC288'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">doc</span><span class="o">=</span><span class="s">&#39;Return the most recent error.&#39;</span><span class="p">)</span></div><div class='line' id='LC289'><br/></div><div class='line' id='LC290'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">timeout</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span></div><div class='line' id='LC291'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span></div><div class='line' id='LC292'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span></div><div class='line' id='LC293'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">doc</span><span class="o">=</span><span class="s">&#39;&#39;&#39;Set a capture timeout (equivalent to the timeout value in</span></div><div class='line' id='LC294'><span class="s"> pcap_open, but with implications for non-pcap sources as well).</span></div><div class='line' id='LC295'><span class="s"> Timeout value is in ms.&#39;&#39;&#39;</span><span class="p">)</span></div><div class='line' id='LC296'><br/></div><div class='line' id='LC297'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">vap</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span></div><div class='line' id='LC298'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_vap</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span></div><div class='line' id='LC299'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_vap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span></div><div class='line' id='LC300'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">doc</span><span class="o">=</span><span class="s">&#39;Set/Get the VAP (if we use VAPs).&#39;</span><span class="p">)</span></div><div class='line' id='LC301'><br/></div><div class='line' id='LC302'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">capiface</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span></div><div class='line' id='LC303'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_capiface</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span></div><div class='line' id='LC304'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">doc</span><span class="o">=</span><span class="s">&#39;Get the interface we</span><span class="se">\&#39;</span><span class="s">re capturing from.&#39;</span><span class="p">)</span></div><div class='line' id='LC305'><br/></div><div class='line' id='LC306'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">driver_name</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span></div><div class='line' id='LC307'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_driver_name</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span></div><div class='line' id='LC308'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">doc</span><span class="o">=</span><span class="s">&#39;Get the driver.&#39;</span><span class="p">)</span></div><div class='line' id='LC309'><br/></div><div class='line' id='LC310'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># TODO: This isn&#39;t defined in Lorcon2 yet</span></div><div class='line' id='LC311'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c">#datalink = property(</span></div><div class='line' id='LC312'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># lambda self: self.lib.lorcon_get_datalink(self),</span></div><div class='line' id='LC313'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># lambda self, x: self.lib.lorcon_set_datalink(self, x),</span></div><div class='line' id='LC314'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># doc=&#39;Datalink layer info&#39;)</span></div><div class='line' id='LC315'><br/></div><div class='line' id='LC316'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">channel</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span></div><div class='line' id='LC317'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_channel</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span></div><div class='line' id='LC318'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_channel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span></div><div class='line' id='LC319'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">doc</span><span class="o">=</span><span class="s">&#39;Get/set channel/frequency&#39;</span><span class="p">)</span></div><div class='line' id='LC320'><br/></div><div class='line' id='LC321'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">pcap</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span></div><div class='line' id='LC322'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_pcap</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span></div><div class='line' id='LC323'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">doc</span><span class="o">=</span><span class="s">&#39;Get a pcap_t&#39;</span><span class="p">)</span></div><div class='line' id='LC324'><br/></div><div class='line' id='LC325'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">selectable_fd</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span></div><div class='line' id='LC326'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_selectable_fd</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span></div><div class='line' id='LC327'><br/></div><div class='line' id='LC328'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># These properties are a bit more complicated, so define them using</span></div><div class='line' id='LC329'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># decorators</span></div><div class='line' id='LC330'><br/></div><div class='line' id='LC331'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nd">@property</span></div><div class='line' id='LC332'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">hwmac</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></div><div class='line' id='LC333'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">&#39;&#39;&#39;Get/set MAC address, returns length of MAC and allocates in **mac,</span></div><div class='line' id='LC334'><span class="sd"> caller is responsible for freeing this memory. Different PHY types may</span></div><div class='line' id='LC335'><span class="sd"> have different MAC lengths.</span></div><div class='line' id='LC336'><br/></div><div class='line' id='LC337'><span class="sd"> For 802.11, MAC is always 6 bytes.</span></div><div class='line' id='LC338'><br/></div><div class='line' id='LC339'><span class="sd"> A length of 0 indicates no set MAC on this PHY. Negative numbers</span></div><div class='line' id='LC340'><span class="sd"> indicate error fetching MAC from hardware.</span></div><div class='line' id='LC341'><br/></div><div class='line' id='LC342'><span class="sd"> &#39;&#39;&#39;</span></div><div class='line' id='LC343'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">mac</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint8</span><span class="p">)()</span></div><div class='line' id='LC344'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">maclen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_get_hwmac</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">mac</span><span class="p">))</span></div><div class='line' id='LC345'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="n">maclen</span><span class="p">:</span></div><div class='line' id='LC346'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">mac</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">maclen</span><span class="p">]</span></div><div class='line' id='LC347'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">raise</span> <span class="n">LorconError</span><span class="p">(</span><span class="s">&#39;No MAC on this PHY&#39;</span><span class="p">)</span></div><div class='line' id='LC348'><br/></div><div class='line' id='LC349'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nd">@hwmac.setter</span></div><div class='line' id='LC350'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">def</span> <span class="nf">hwmac</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mac</span><span class="p">):</span></div><div class='line' id='LC351'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;mac should be a list of 8 bit integers&#39;</span></div><div class='line' id='LC352'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">mac_array</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint8</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">mac</span><span class="p">))(</span><span class="o">*</span><span class="n">mac</span><span class="p">)</span></div><div class='line' id='LC353'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">lorcon_set_hwmac</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">mac_array</span><span class="p">),</span> <span class="n">mac_array</span><span class="p">)</span></div><div class='line' id='LC354'><br/></div><div class='line' id='LC355'><span class="k">def</span> <span class="nf">_generate_driver_list</span><span class="p">(</span><span class="n">lib</span><span class="p">,</span> <span class="n">ptr</span><span class="p">):</span></div><div class='line' id='LC356'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="sd">&#39;&#39;&#39;Creates a list of Driver objects from a pointer to a driver list from</span></div><div class='line' id='LC357'><span class="sd"> lorcon_list_drivers.</span></div><div class='line' id='LC358'><br/></div><div class='line' id='LC359'><span class="sd"> This makes sure each Driver object can be independently garbage collected.</span></div><div class='line' id='LC360'><br/></div><div class='line' id='LC361'><span class="sd"> &#39;&#39;&#39;</span></div><div class='line' id='LC362'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">driver_list</span> <span class="o">=</span> <span class="p">[]</span></div><div class='line' id='LC363'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">while</span> <span class="bp">True</span><span class="p">:</span></div><div class='line' id='LC364'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">try</span><span class="p">:</span></div><div class='line' id='LC365'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">driver_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Driver</span><span class="p">(</span><span class="n">lib</span><span class="p">,</span> <span class="n">ptr</span><span class="p">))</span></div><div class='line' id='LC366'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span></div><div class='line' id='LC367'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">break</span></div><div class='line' id='LC368'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">ptr</span> <span class="o">=</span> <span class="n">ptr</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">next</span></div><div class='line' id='LC369'><br/></div><div class='line' id='LC370'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># Remove the &quot;next&quot; pointers in each driver, so that they can be garbage</span></div><div class='line' id='LC371'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c"># collected independently</span></div><div class='line' id='LC372'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="n">driver</span> <span class="ow">in</span> <span class="n">driver_list</span><span class="p">:</span></div><div class='line' id='LC373'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">driver</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">next</span> <span class="o">=</span> <span class="bp">None</span></div><div class='line' id='LC374'><br/></div><div class='line' id='LC375'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">driver_list</span></div><div class='line' id='LC376'><br/></div><div class='line' id='LC377'><span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span></div><div class='line' id='LC378'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">l</span> <span class="o">=</span> <span class="n">Lorcon</span><span class="p">(</span><span class="s">&#39;/tmp/lorcon/lib/liborcon2.so&#39;</span><span class="p">)</span></div><div class='line' id='LC379'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">driver</span> <span class="o">=</span> <span class="n">l</span><span class="o">.</span><span class="n">auto_driver</span><span class="p">(</span><span class="s">&#39;wlan0&#39;</span><span class="p">)</span></div><div class='line' id='LC380'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">context</span> <span class="o">=</span> <span class="n">l</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="s">&#39;wlan0&#39;</span><span class="p">,</span> <span class="n">driver</span><span class="p">)</span></div><div class='line' id='LC381'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">context</span><span class="o">.</span><span class="n">open_inject</span><span class="p">()</span></div><div class='line' id='LC382'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">context</span><span class="o">.</span><span class="n">send_bytes</span><span class="p">(</span><span class="s">&#39;Hello World&#39;</span><span class="p">)</span></div></pre></div>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+
+<div class="frame frame-loading large-loading-area" style="display:none;" data-tree-list-url="/tom5760/pylorcon2/tree-list/aeb74d138e201448c5aa8be24638111fd0e68886" data-blob-url-prefix="/tom5760/pylorcon2/blob/aeb74d138e201448c5aa8be24638111fd0e68886">
+ <img src="https://a248.e.akamai.net/assets.github.com/images/spinners/octocat-spinner-128.gif?1347543527" height="64" width="64">
+</div>
+
+ </div>
+ </div>
+ <div class="context-overlay"></div>
+ </div>
+
+ <div id="footer-push"></div><!-- hack for sticky footer -->
+ </div><!-- end of wrapper - hack for sticky footer -->
+
+ <!-- footer -->
+ <div id="footer" >
+
+ <div class="upper_footer">
+ <div class="container clearfix">
+
+ <!--[if IE]><h4 id="blacktocat_ie">GitHub Links</h4><![endif]-->
+ <![if !IE]><h4 id="blacktocat">GitHub Links</h4><![endif]>
+
+ <ul class="footer_nav">
+ <h4>GitHub</h4>
+ <li><a href="https://github.com/about">About</a></li>
+ <li><a href="https://github.com/blog">Blog</a></li>
+ <li><a href="https://github.com/features">Features</a></li>
+ <li><a href="https://github.com/contact">Contact &amp; Support</a></li>
+ <li><a href="http://training.github.com/">Training</a></li>
+ <li><a href="http://enterprise.github.com/">GitHub Enterprise</a></li>
+ <li><a href="http://status.github.com/">Site Status</a></li>
+ </ul>
+
+ <ul class="footer_nav">
+ <h4>Clients</h4>
+ <li><a href="http://mac.github.com/">GitHub for Mac</a></li>
+ <li><a href="http://windows.github.com/">GitHub for Windows</a></li>
+ <li><a href="http://eclipse.github.com/">GitHub for Eclipse</a></li>
+ <li><a href="http://mobile.github.com/">GitHub Mobile Apps</a></li>
+ </ul>
+
+ <ul class="footer_nav">
+ <h4>Tools</h4>
+ <li><a href="http://get.gaug.es/">Gauges: Web analytics</a></li>
+ <li><a href="http://speakerdeck.com">Speaker Deck: Presentations</a></li>
+ <li><a href="https://gist.github.com">Gist: Code snippets</a></li>
+
+ <h4 class="second">Extras</h4>
+ <li><a href="http://jobs.github.com/">Job Board</a></li>
+ <li><a href="http://shop.github.com/">GitHub Shop</a></li>
+ <li><a href="http://octodex.github.com/">The Octodex</a></li>
+ </ul>
+
+ <ul class="footer_nav">
+ <h4>Documentation</h4>
+ <li><a href="http://help.github.com/">GitHub Help</a></li>
+ <li><a href="http://developer.github.com/">Developer API</a></li>
+ <li><a href="http://github.github.com/github-flavored-markdown/">GitHub Flavored Markdown</a></li>
+ <li><a href="http://pages.github.com/">GitHub Pages</a></li>
+ </ul>
+
+ </div><!-- /.site -->
+ </div><!-- /.upper_footer -->
+
+<div class="lower_footer">
+ <div class="container clearfix">
+ <!--[if IE]><div id="legal_ie"><![endif]-->
+ <![if !IE]><div id="legal"><![endif]>
+ <ul>
+ <li><a href="https://github.com/site/terms">Terms of Service</a></li>
+ <li><a href="https://github.com/site/privacy">Privacy</a></li>
+ <li><a href="https://github.com/security">Security</a></li>
+ </ul>
+
+ <p>&copy; 2012 <span title="0.04560s from fe18.rs.github.com">GitHub</span> Inc. All rights reserved.</p>
+ </div><!-- /#legal or /#legal_ie-->
+
+ </div><!-- /.site -->
+</div><!-- /.lower_footer -->
+
+
+ </div><!-- /#footer -->
+
+
+
+<div id="keyboard_shortcuts_pane" class="instapaper_ignore readability-extra" style="display:none">
+ <h2>Keyboard Shortcuts <small><a href="#" class="js-see-all-keyboard-shortcuts">(see all)</a></small></h2>
+
+ <div class="columns threecols">
+ <div class="column first">
+ <h3>Site wide shortcuts</h3>
+ <dl class="keyboard-mappings">
+ <dt>s</dt>
+ <dd>Focus command bar</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>?</dt>
+ <dd>Bring up this help dialog</dd>
+ </dl>
+ </div><!-- /.column.first -->
+
+ <div class="column middle" style='display:none'>
+ <h3>Commit list</h3>
+ <dl class="keyboard-mappings">
+ <dt>j</dt>
+ <dd>Move selection down</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>k</dt>
+ <dd>Move selection up</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>c <em>or</em> o <em>or</em> enter</dt>
+ <dd>Open commit</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>y</dt>
+ <dd>Expand URL to its canonical form</dd>
+ </dl>
+ </div><!-- /.column.first -->
+
+ <div class="column last js-hidden-pane" style='display:none'>
+ <h3>Pull request list</h3>
+ <dl class="keyboard-mappings">
+ <dt>j</dt>
+ <dd>Move selection down</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>k</dt>
+ <dd>Move selection up</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>o <em>or</em> enter</dt>
+ <dd>Open issue</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
+ <dd>Submit comment</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> shift p</dt>
+ <dd>Preview comment</dd>
+ </dl>
+ </div><!-- /.columns.last -->
+
+ </div><!-- /.columns.equacols -->
+
+ <div class="js-hidden-pane" style='display:none'>
+ <div class="rule"></div>
+
+ <h3>Issues</h3>
+
+ <div class="columns threecols">
+ <div class="column first">
+ <dl class="keyboard-mappings">
+ <dt>j</dt>
+ <dd>Move selection down</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>k</dt>
+ <dd>Move selection up</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>x</dt>
+ <dd>Toggle selection</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>o <em>or</em> enter</dt>
+ <dd>Open issue</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
+ <dd>Submit comment</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> shift p</dt>
+ <dd>Preview comment</dd>
+ </dl>
+ </div><!-- /.column.first -->
+ <div class="column last">
+ <dl class="keyboard-mappings">
+ <dt>c</dt>
+ <dd>Create issue</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>l</dt>
+ <dd>Create label</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>i</dt>
+ <dd>Back to inbox</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>u</dt>
+ <dd>Back to issues</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>/</dt>
+ <dd>Focus issues search</dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="js-hidden-pane" style='display:none'>
+ <div class="rule"></div>
+
+ <h3>Issues Dashboard</h3>
+
+ <div class="columns threecols">
+ <div class="column first">
+ <dl class="keyboard-mappings">
+ <dt>j</dt>
+ <dd>Move selection down</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>k</dt>
+ <dd>Move selection up</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>o <em>or</em> enter</dt>
+ <dd>Open issue</dd>
+ </dl>
+ </div><!-- /.column.first -->
+ </div>
+ </div>
+
+ <div class="js-hidden-pane" style='display:none'>
+ <div class="rule"></div>
+
+ <h3>Network Graph</h3>
+ <div class="columns equacols">
+ <div class="column first">
+ <dl class="keyboard-mappings">
+ <dt><span class="badmono">←</span> <em>or</em> h</dt>
+ <dd>Scroll left</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt><span class="badmono">→</span> <em>or</em> l</dt>
+ <dd>Scroll right</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt><span class="badmono">↑</span> <em>or</em> k</dt>
+ <dd>Scroll up</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt><span class="badmono">↓</span> <em>or</em> j</dt>
+ <dd>Scroll down</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>t</dt>
+ <dd>Toggle visibility of head labels</dd>
+ </dl>
+ </div><!-- /.column.first -->
+ <div class="column last">
+ <dl class="keyboard-mappings">
+ <dt>shift <span class="badmono">←</span> <em>or</em> shift h</dt>
+ <dd>Scroll all the way left</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>shift <span class="badmono">→</span> <em>or</em> shift l</dt>
+ <dd>Scroll all the way right</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>shift <span class="badmono">↑</span> <em>or</em> shift k</dt>
+ <dd>Scroll all the way up</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>shift <span class="badmono">↓</span> <em>or</em> shift j</dt>
+ <dd>Scroll all the way down</dd>
+ </dl>
+ </div><!-- /.column.last -->
+ </div>
+ </div>
+
+ <div class="js-hidden-pane" >
+ <div class="rule"></div>
+ <div class="columns threecols">
+ <div class="column first js-hidden-pane" >
+ <h3>Source Code Browsing</h3>
+ <dl class="keyboard-mappings">
+ <dt>t</dt>
+ <dd>Activates the file finder</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>l</dt>
+ <dd>Jump to line</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>w</dt>
+ <dd>Switch branch/tag</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>y</dt>
+ <dd>Expand URL to its canonical form</dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="js-hidden-pane" style='display:none'>
+ <div class="rule"></div>
+ <div class="columns threecols">
+ <div class="column first">
+ <h3>Browsing Commits</h3>
+ <dl class="keyboard-mappings">
+ <dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
+ <dd>Submit comment</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>escape</dt>
+ <dd>Close form</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>p</dt>
+ <dd>Parent commit</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>o</dt>
+ <dd>Other parent commit</dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="js-hidden-pane" style='display:none'>
+ <div class="rule"></div>
+ <h3>Notifications</h3>
+
+ <div class="columns threecols">
+ <div class="column first">
+ <dl class="keyboard-mappings">
+ <dt>j</dt>
+ <dd>Move selection down</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>k</dt>
+ <dd>Move selection up</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>o <em>or</em> enter</dt>
+ <dd>Open notification</dd>
+ </dl>
+ </div><!-- /.column.first -->
+
+ <div class="column second">
+ <dl class="keyboard-mappings">
+ <dt>e <em>or</em> shift i <em>or</em> y</dt>
+ <dd>Mark as read</dd>
+ </dl>
+ <dl class="keyboard-mappings">
+ <dt>shift m</dt>
+ <dd>Mute thread</dd>
+ </dl>
+ </div><!-- /.column.first -->
+ </div>
+ </div>
+
+</div>
+
+ <div id="markdown-help" class="instapaper_ignore readability-extra">
+ <h2>Markdown Cheat Sheet</h2>
+
+ <div class="cheatsheet-content">
+
+ <div class="mod">
+ <div class="col">
+ <h3>Format Text</h3>
+ <p>Headers</p>
+ <pre>
+# This is an &lt;h1&gt; tag
+## This is an &lt;h2&gt; tag
+###### This is an &lt;h6&gt; tag</pre>
+ <p>Text styles</p>
+ <pre>
+*This text will be italic*
+_This will also be italic_
+**This text will be bold**
+__This will also be bold__
+
+*You **can** combine them*
+</pre>
+ </div>
+ <div class="col">
+ <h3>Lists</h3>
+ <p>Unordered</p>
+ <pre>
+* Item 1
+* Item 2
+ * Item 2a
+ * Item 2b</pre>
+ <p>Ordered</p>
+ <pre>
+1. Item 1
+2. Item 2
+3. Item 3
+ * Item 3a
+ * Item 3b</pre>
+ </div>
+ <div class="col">
+ <h3>Miscellaneous</h3>
+ <p>Images</p>
+ <pre>
+![GitHub Logo](/images/logo.png)
+Format: ![Alt Text](url)
+</pre>
+ <p>Links</p>
+ <pre>
+http://github.com - automatic!
+[GitHub](http://github.com)</pre>
+<p>Blockquotes</p>
+ <pre>
+As Kanye West said:
+
+> We're living the future so
+> the present is our past.
+</pre>
+ </div>
+ </div>
+ <div class="rule"></div>
+
+ <h3>Code Examples in Markdown</h3>
+ <div class="col">
+ <p>Syntax highlighting with <a href="http://github.github.com/github-flavored-markdown/" title="GitHub Flavored Markdown" target="_blank">GFM</a></p>
+ <pre>
+```javascript
+function fancyAlert(arg) {
+ if(arg) {
+ $.facebox({div:'#foo'})
+ }
+}
+```</pre>
+ </div>
+ <div class="col">
+ <p>Or, indent your code 4 spaces</p>
+ <pre>
+Here is a Python code example
+without syntax highlighting:
+
+ def foo:
+ if not bar:
+ return true</pre>
+ </div>
+ <div class="col">
+ <p>Inline code for comments</p>
+ <pre>
+I think you should use an
+`&lt;addr&gt;` element here instead.</pre>
+ </div>
+ </div>
+
+ </div>
+</div>
+
+
+ <div id="ajax-error-message" class="flash flash-error">
+ <span class="mini-icon mini-icon-exclamation"></span>
+ Something went wrong with that request. Please try again.
+ <a href="#" class="mini-icon mini-icon-remove-close ajax-error-dismiss"></a>
+ </div>
+
+ <div id="logo-popup">
+ <h2>Looking for the GitHub logo?</h2>
+ <ul>
+ <li>
+ <h4>GitHub Logo</h4>
+ <a href="http://github-media-downloads.s3.amazonaws.com/GitHub_Logos.zip"><img alt="Github_logo" src="https://a248.e.akamai.net/assets.github.com/images/modules/about_page/github_logo.png?1340659560" /></a>
+ <a href="http://github-media-downloads.s3.amazonaws.com/GitHub_Logos.zip" class="minibutton download">Download</a>
+ </li>
+ <li>
+ <h4>The Octocat</h4>
+ <a href="http://github-media-downloads.s3.amazonaws.com/Octocats.zip"><img alt="Octocat" src="https://a248.e.akamai.net/assets.github.com/images/modules/about_page/octocat.png?1340659560" /></a>
+ <a href="http://github-media-downloads.s3.amazonaws.com/Octocats.zip" class="minibutton download">Download</a>
+ </li>
+ </ul>
+ </div>
+
+
+
+ <span id='server_response_time' data-time='0.04698' data-host='fe18'></span>
+
+ </body>
+</html>
+