litespeed-quic/docs/html/lsquic_8h_source.html

193 lines
99 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>LiteSpeed QUIC Library: include/lsquic.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">LiteSpeed QUIC Library
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">lsquic.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="lsquic_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* Copyright (c) 2017 LiteSpeed Technologies Inc. See LICENSE. */</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#ifndef __LSQUIC_H__</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#define __LSQUIC_H__</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="lsquic__types_8h.html">lsquic_types.h</a>&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;sys/uio.h&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">struct </span>iovec;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">struct </span>sockaddr;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="lsquic_8h.html#abaf1fe07c4f99aa36d3d5502bbfc371d"> 29</a></span>&#160;<span class="preprocessor">#define LSENG_SERVER (1 &lt;&lt; 0)</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a8f395ac69797c7be8d9d524d464e7ed2"> 34</a></span>&#160;<span class="preprocessor">#define LSENG_HTTP (1 &lt;&lt; 1)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#define LSENG_HTTP_SERVER (LSENG_SERVER|LSENG_HTTP)</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db"> 42</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32"> 46</a></span>&#160; <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32">LSQVER_035</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7"> 54</a></span>&#160; <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7">LSQVER_037</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966"> 60</a></span>&#160; <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966">LSQVER_038</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3"> 67</a></span>&#160; <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3">LSQVER_039</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3"> 72</a></span>&#160; <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3">LSQVER_041</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; N_LSQVER</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a0420e68d347462080cf2e583b77d61a0"> 81</a></span>&#160;<span class="preprocessor">#define LSQUIC_SUPPORTED_VERSIONS ((1 &lt;&lt; LSQVER_035) | (1 &lt;&lt; LSQVER_037) | \</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"> (1 &lt;&lt; LSQVER_038) | (1 &lt;&lt; LSQVER_039) | (1 &lt;&lt; LSQVER_041))</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor">#define LSQUIC_EXPERIMENTAL_VERSIONS ((1 &lt;&lt; LSQVER_041))</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html"> 92</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__stream__if.html">lsquic_stream_if</a> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html#a1eb8c7575d67c7b1c75c472288751adb"> 98</a></span>&#160; <a class="code" href="lsquic__types_8h.html#a21c289bcbb4643effba8bb75eeffd8cd">lsquic_conn_ctx_t</a> *(*on_new_conn)(<span class="keywordtype">void</span> *stream_if_ctx,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html#afdab3bce65931517452d2ddd979596d7"> 104</a></span>&#160; void (*<a class="code" href="structlsquic__stream__if.html#afdab3bce65931517452d2ddd979596d7">on_goaway_received</a>)(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; void (*on_conn_closed)(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structlsquic__stream__if.html#aa9c28eae8f3bd33d028578e0aef24402"> 115</a></span>&#160; (*on_new_stream)(<span class="keywordtype">void</span> *stream_if_ctx, <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; void (*on_read) (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *h);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; void (*on_write) (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *h);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; void (*on_close) (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *h);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;};</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a6fd9104d1ffa8c391dede0a714a5919b"> 127</a></span>&#160;<span class="preprocessor">#define LSQUIC_MIN_FCW (16 * 1024)</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">/* Each LSQUIC_DF_* value corresponds to es_* entry in</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * lsquic_engine_settings below.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="lsquic_8h.html#aecb8427433af4e3fa5260fe71c313d8f"> 136</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_VERSIONS (LSQUIC_SUPPORTED_VERSIONS &amp; \</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"> ~LSQUIC_EXPERIMENTAL_VERSIONS)</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor">#define LSQUIC_DF_CFCW_SERVER (3 * 1024 * 1024 / 2)</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#define LSQUIC_DF_CFCW_CLIENT (15 * 1024 * 1024)</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SFCW_SERVER (1 * 1024 * 1024)</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SFCW_CLIENT (6 * 1024 * 1024)</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor">#define LSQUIC_DF_MAX_STREAMS_IN 100</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a1e7808ab9863e1ae4b44e7856e75eee8"> 148</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_HANDSHAKE_TO (10 * 1000 * 1000)</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor">#define LSQUIC_DF_IDLE_CONN_TO (30 * 1000 * 1000)</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SILENT_CLOSE 1</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a1e1ab46b8acff52f127359bf68a8b297"> 157</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_MAX_HEADER_LIST_SIZE 0</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="lsquic_8h.html#aeefb2f925217c311af00c92a77e0f191"> 160</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_UA &quot;LSQUIC&quot;</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#define LSQUIC_DF_STTL 86400</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#define LSQUIC_DF_MAX_INCHOATE (1 * 1000 * 1000)</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_SREJ_SERVER 1</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_SREJ_CLIENT 0 </span><span class="comment">/* TODO: client support */</span><span class="preprocessor"></span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a9e3f5f4a0ecb53f96d2b9249cded3aef"> 167</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_NSTP 0</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_PUSH 1</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor">#define LSQUIC_DF_SUPPORT_TCID0 1</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a13d1cb05ad19ae5cd016e016d228326c"> 171</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_HONOR_PRST 0</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="lsquic_8h.html#afc995b576f8013a43436201a7adf0221"> 174</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PROGRESS_CHECK 1000</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a472d9508529e22b2be78b48d0fd69529"> 177</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PENDRW_CHECK 10</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a5665ba68a62be14aa1332316512ec4fe"> 180</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_RW_ONCE 0</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a4a8cbc259dcff01fa93959ca5b2a0a35"> 183</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PROC_TIME_THRESH 0</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a332b2fcfbbd83bbeb6027a622ec72f69"> 186</a></span>&#160;<span class="preprocessor">#define LSQUIC_DF_PACE_PACKETS 1</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html"> 188</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> {</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a9dca1ee29ab43ca9454b6b0a8d5e2799"> 197</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#a9dca1ee29ab43ca9454b6b0a8d5e2799">es_versions</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a2931ff6b1bc06429379debcc2c5cc5fa"> 209</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#a2931ff6b1bc06429379debcc2c5cc5fa">es_cfcw</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ac88c5a68eac5f324a1b1524a962be26d"> 221</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#ac88c5a68eac5f324a1b1524a962be26d">es_sfcw</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a7297980e558cd2deafb955534520934b"> 231</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#a7297980e558cd2deafb955534520934b">es_max_cfcw</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">unsigned</span> es_max_sfcw;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ab6848de0e8025b08398ba43445de7405"> 236</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#ab6848de0e8025b08398ba43445de7405">es_max_streams_in</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#aeaef9bb4ecadb340cd05cfb85a6901a5"> 245</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structlsquic__engine__settings.html#aeaef9bb4ecadb340cd05cfb85a6901a5">es_handshake_to</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a4ba2bd3e85b8b4d0d929e31d675554e2"> 248</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structlsquic__engine__settings.html#a4ba2bd3e85b8b4d0d929e31d675554e2">es_idle_conn_to</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#aebf95d077a1a0de005b2ddac5afdfdc4"> 251</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#aebf95d077a1a0de005b2ddac5afdfdc4">es_silent_close</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b"> 258</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b">es_max_header_list_size</a>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a578718dc886cffa23e97fa11fb26138b"> 261</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structlsquic__engine__settings.html#a578718dc886cffa23e97fa11fb26138b">es_ua</a>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; uint32_t es_pdmd; <span class="comment">/* One fixed value X509 */</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; uint32_t es_aead; <span class="comment">/* One fixed value AESG */</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; uint32_t es_kexs; <span class="comment">/* One fixed value C255 */</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#adfd0c61d3243d85d3676876ca67e6466"> 272</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#adfd0c61d3243d85d3676876ca67e6466">es_support_srej</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a8b68eb068b40eb24e5e08cab097f077a"> 284</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#a8b68eb068b40eb24e5e08cab097f077a">es_support_push</a>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a1570dc65c3b4d097987f08ade3cfd993"> 293</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#a1570dc65c3b4d097987f08ade3cfd993">es_support_tcid0</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#addfa7e19884a81f50ca4d573b9aa16a3"> 305</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#addfa7e19884a81f50ca4d573b9aa16a3">es_support_nstp</a>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#ac5a3d759dcdf8915a98cbc3dd56d5f22"> 312</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#ac5a3d759dcdf8915a98cbc3dd56d5f22">es_honor_prst</a>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a85a83ab74a018c293f83d9b78a797d8e"> 327</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#a85a83ab74a018c293f83d9b78a797d8e">es_progress_check</a>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a9baca38fb49c0028941a54de17a3580a"> 344</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#a9baca38fb49c0028941a54de17a3580a">es_pendrw_check</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a59907a4c1080bd6eb5c5c7776b968af4"> 358</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#a59907a4c1080bd6eb5c5c7776b968af4">es_rw_once</a>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#aaa9758b94c763b457c4a6ccc4f1e8100"> 378</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structlsquic__engine__settings.html#aaa9758b94c763b457c4a6ccc4f1e8100">es_proc_time_thresh</a>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="structlsquic__engine__settings.html#a90403ce7cbb10f9ddf438cfc1bd62530"> 385</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structlsquic__engine__settings.html#a90403ce7cbb10f9ddf438cfc1bd62530">es_pace_packets</a>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;};</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment">/* Initialize `settings&#39; to default values */</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;lsquic_engine_init_settings (<span class="keyword">struct</span> <a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> *,</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordtype">unsigned</span> lsquic_engine_flags);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<a class="code" href="lsquic_8h.html#a827d6567e492bd67c330e2d48047ad49">lsquic_engine_check_settings</a> (<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> *settings,</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordtype">unsigned</span> lsquic_engine_flags,</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordtype">char</span> *err_buf, <span class="keywordtype">size_t</span> err_buf_sz);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="structlsquic__out__spec.html"> 415</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__out__spec.html">lsquic_out_spec</a></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;{</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordtype">size_t</span> sz;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span>sockaddr *local_sa;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span>sockaddr *dest_sa;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordtype">void</span> *peer_ctx;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;};</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf"> 428</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf">lsquic_packets_out_f</a>)(</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordtype">void</span> *packets_out_ctx,</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__out__spec.html">lsquic_out_spec</a> *out_spec,</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordtype">unsigned</span> n_packets_out</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="structlsquic__packout__mem__if.html"> 443</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__packout__mem__if.html">lsquic_packout_mem_if</a></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordtype">void</span> * (*pmi_allocate) (<span class="keywordtype">void</span> *pmi_ctx, <span class="keywordtype">size_t</span> sz);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; void (*pmi_release) (<span class="keywordtype">void</span> *pmi_ctx, <span class="keywordtype">void</span> *obj);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;};</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="comment">/* TODO: describe this important data structure */</span></div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="structlsquic__engine__api.html"> 450</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlsquic__engine__api.html">lsquic_engine_api</a></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__engine__settings.html">lsquic_engine_settings</a> *ea_settings; <span class="comment">/* Optional */</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__stream__if.html">lsquic_stream_if</a> *ea_stream_if;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordtype">void</span> *ea_stream_if_ctx;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf">lsquic_packets_out_f</a> ea_packets_out;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordtype">void</span> *ea_packets_out_ctx;</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="structlsquic__engine__api.html#ab1c6af0c63f81cfa0c9ed6d6952b5482"> 460</a></span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structlsquic__packout__mem__if.html">lsquic_packout_mem_if</a> *<a class="code" href="structlsquic__engine__api.html#ab1c6af0c63f81cfa0c9ed6d6952b5482">ea_pmi</a>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordtype">void</span> *ea_pmi_ctx;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;} <a class="code" href="structlsquic__engine__api.html">lsquic_engine_api_t</a>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<a class="code" href="lsquic_8h.html#afa6f69c943be0a943f28699af6ae1000">lsquic_engine_new</a> (<span class="keywordtype">unsigned</span> lsquic_engine_flags,</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlsquic__engine__api.html">lsquic_engine_api</a> *);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<a class="code" href="lsquic_8h.html#a5e2335a871f1ab9b66e3c59b442e8cbe">lsquic_engine_connect</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr *peer_sa,</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordtype">void</span> *peer_ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *hostname,</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> max_packet_size);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<a class="code" href="lsquic_8h.html#adb3d3d822e9a8217d90acbf29594ae40">lsquic_engine_packet_in</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *,</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *packet_in_data, <span class="keywordtype">size_t</span> packet_in_size,</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr *sa_local, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr *sa_peer,</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordtype">void</span> *peer_ctx);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<a class="code" href="lsquic_8h.html#a60427549acdb608cc360173d817393e3">lsquic_engine_proc_all</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<a class="code" href="lsquic_8h.html#aefe24851a36ebe16289a6fa3c5a1c8cc">lsquic_engine_process_conns_with_incoming</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<a class="code" href="lsquic_8h.html#aefc66717813306c208483cccbb90ab9a">lsquic_engine_process_conns_to_tick</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<a class="code" href="lsquic_8h.html#a74d8c8f033c2e654fdb3487a2bf55d8a">lsquic_engine_has_pend_rw</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<a class="code" href="lsquic_8h.html#aae156a499af8ae01ca6f4fa307da86c6">lsquic_engine_process_conns_with_pend_rw</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<a class="code" href="lsquic_8h.html#a9d5d9609ca70350117994e2e2e934a22">lsquic_engine_has_unsent_packets</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<a class="code" href="lsquic_8h.html#a88a2040cc4b0e575b2fa2affe8597697">lsquic_engine_send_unsent_packets</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;lsquic_engine_destroy (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="keywordtype">void</span> lsquic_conn_make_stream(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="keywordtype">unsigned</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<a class="code" href="lsquic_8h.html#a33bb7961ffad842a052bcd81202de5b9">lsquic_conn_n_pending_streams</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="keywordtype">unsigned</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<a class="code" href="lsquic_8h.html#a8fe1ef20026e5e68a892036005c20a19">lsquic_conn_cancel_pending_streams</a> (<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *, <span class="keywordtype">unsigned</span> n);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<a class="code" href="lsquic_8h.html#aff77b794b9ca995245cc9a739b76d197">lsquic_conn_going_away</a>(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *conn);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="keywordtype">void</span> <a class="code" href="lsquic_8h.html#ad8f2345e0b9f8d19f7b6a1fa4e970aa8">lsquic_conn_close</a>(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *conn);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="keywordtype">int</span> lsquic_stream_wantread(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">int</span> is_want);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;ssize_t lsquic_stream_read(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;ssize_t lsquic_stream_readv(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keyword">const</span> <span class="keyword">struct</span> iovec *,</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordtype">int</span> iovcnt);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="keywordtype">int</span> lsquic_stream_wantwrite(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">int</span> is_want);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;ssize_t <a class="code" href="lsquic_8h.html#a1071b7be4f2f28c5fedf957aa6309f9a">lsquic_stream_write</a>(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;ssize_t lsquic_stream_writev(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keyword">const</span> <span class="keyword">struct</span> iovec *vec, <span class="keywordtype">int</span> count);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="structlsquic__reader.html"> 604</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__reader.html">lsquic_reader</a></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;{</div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="structlsquic__reader.html#ae6a68ebf2a1fb77160b0bac599d42790"> 612</a></span>&#160; size_t (*lsqr_read) (<span class="keywordtype">void</span> *lsqr_ctx, <span class="keywordtype">void</span> *buf, <span class="keywordtype">size_t</span> count);</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="structlsquic__reader.html#aaf6c91ecaf35ca6faa39dde9ea401f17"> 616</a></span>&#160; size_t (*lsqr_size) (<span class="keywordtype">void</span> *lsqr_ctx);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordtype">void</span> *lsqr_ctx;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;};</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;ssize_t</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<a class="code" href="lsquic_8h.html#a49f11caabdf3638d3a3217ebdd21c3af">lsquic_stream_writef</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *, <span class="keyword">struct</span> <a class="code" href="structlsquic__reader.html">lsquic_reader</a> *);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;<a class="code" href="lsquic_8h.html#abcf25d8301c4a2796ea13e6e306a33a9">lsquic_stream_flush</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="structlsquic__http__header.html"> 645</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlsquic__http__header.html">lsquic_http_header</a></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;{</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">struct </span>iovec name;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keyword">struct </span>iovec value;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;} <a class="code" href="lsquic_8h.html#a822627a87eb003fd9e2e56ebded5b3f3">lsquic_http_header_t</a>;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="structlsquic__http__headers.html"> 656</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__http__headers.html">lsquic_http_headers</a></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;{</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordtype">int</span> count;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; lsquic_http_header_t *headers;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;};</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;<span class="keywordtype">int</span> lsquic_stream_send_headers(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s,</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keyword">const</span> <a class="code" href="structlsquic__http__headers.html">lsquic_http_headers_t</a> *h, <span class="keywordtype">int</span> eos);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="keywordtype">int</span> lsquic_conn_is_push_enabled(<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="keywordtype">int</span> <a class="code" href="lsquic_8h.html#a7fee61cc609a4b274a4de2b41db6a9e4">lsquic_stream_shutdown</a>(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">int</span> how);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="keywordtype">int</span> lsquic_stream_close(<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;uint32_t</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<a class="code" href="lsquic_8h.html#a534523d663336969494d6a3721a63640">lsquic_stream_id</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<a class="code" href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a> *</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<a class="code" href="lsquic_8h.html#a26335cffe38e49a6e87d94967371150d">lsquic_stream_get_ctx</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<a class="code" href="lsquic_8h.html#a199b551bc87bb77814ab4ce58abcdff9">lsquic_stream_is_pushed</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<a class="code" href="lsquic_8h.html#ada61e01ced7a7db11e5c503409c565be">lsquic_stream_refuse_push</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<a class="code" href="lsquic_8h.html#ae0b8525f7dac119f6122af564d0e17fd">lsquic_stream_push_info</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *, uint32_t *ref_stream_id,</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> **headers, <span class="keywordtype">size_t</span> *headers_sz);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="keywordtype">unsigned</span> <a class="code" href="lsquic_8h.html#aa45f5d45b56f5a0d7f881dbccebc5fd8">lsquic_stream_priority</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="keywordtype">int</span> <a class="code" href="lsquic_8h.html#aa5e0ddfd53a44561248a286caacbd114">lsquic_stream_set_priority</a> (<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s, <span class="keywordtype">unsigned</span> priority);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> * <a class="code" href="lsquic_8h.html#a177184b3d7178dda5a3e95e539230b2b">lsquic_stream_conn</a>(<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *s);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<a class="code" href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a> *</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;lsquic_conn_get_stream_by_id (<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c, uint32_t stream_id);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<a class="code" href="lsquic__types_8h.html#acf675534bad01d31b48d9113feff1bbb">lsquic_cid_t</a></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;<a class="code" href="lsquic_8h.html#a487bffd57fd7febe4b316be7dc0a3016">lsquic_conn_id</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="keywordtype">int</span> lsquic_conn_get_sockaddr(<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c,</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr **local, <span class="keyword">const</span> <span class="keyword">struct</span> sockaddr **peer);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"><a class="line" href="structlsquic__logger__if.html"> 740</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structlsquic__logger__if.html">lsquic_logger_if</a> {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; int (*vprintf)(<span class="keywordtype">void</span> *logger_ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, va_list args);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;};</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235"> 747</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235">lsquic_logger_timestamp_style</a> {</div><div class="line"><a name="l00751"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805"> 751</a></span>&#160; <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805">LLTS_NONE</a>,</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;</div><div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b"> 757</a></span>&#160; <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b">LLTS_HHMMSSMS</a>,</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56"> 762</a></span>&#160; <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56">LLTS_YYYYMMDD_HHMMSSMS</a>,</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div><div class="line"><a name="l00772"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b"> 772</a></span>&#160; <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b">LLTS_CHROMELIKE</a>,</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185"> 778</a></span>&#160; <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185">LLTS_HHMMSSUS</a>,</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; N_LLTS</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;};</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="keywordtype">void</span> <a class="code" href="lsquic_8h.html#a5059cabdc84335f56870c8bc7a1235e2">lsquic_logger_init</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structlsquic__logger__if.html">lsquic_logger_if</a> *, <span class="keywordtype">void</span> *logger_ctx,</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235">lsquic_logger_timestamp_style</a>);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<a class="code" href="lsquic_8h.html#a337f6adcc4ec9328e0f293d6128ee376">lsquic_set_log_level</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *log_level);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<a class="code" href="lsquic_8h.html#af8c718a3780425357d070419106e4bc8">lsquic_logger_lopt</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *optarg);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="keywordtype">unsigned</span> <a class="code" href="lsquic_8h.html#abebdca40ce630ad8272752da926d7a24">lsquic_engine_quic_versions</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="lsquic_8h.html#add59f38ae0a3bea39bd3c5c86b70c63c"> 816</a></span>&#160;<span class="preprocessor">#define LSQUIC_GLOBAL_CLIENT (1 &lt;&lt; 0)</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="lsquic_8h.html#a632ff4c3837f60fae3436db6e5f3e039"> 822</a></span>&#160;<span class="preprocessor">#define LSQUIC_GLOBAL_SERVER (1 &lt;&lt; 1)</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<a class="code" href="lsquic_8h.html#a754a3d611e8c6f9a1daeb7b06c00af88">lsquic_global_init</a> (<span class="keywordtype">int</span> flags);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<a class="code" href="lsquic_8h.html#a06b9ac9ba933a060b72975640b2d79a3">lsquic_global_cleanup</a> (<span class="keywordtype">void</span>);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;<a class="code" href="lsquic_8h.html#a2a07e308beb5e1f29ba62597c2a37b2b">lsquic_conn_quic_version</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;<span class="keyword">enum</span> <a class="code" href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;<a class="code" href="lsquic_8h.html#a8fef45d333b115d996080bb254077d8d">lsquic_str2ver</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;<a class="code" href="lsquic__types_8h.html#a21c289bcbb4643effba8bb75eeffd8cd">lsquic_conn_ctx_t</a> *</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;<a class="code" href="lsquic_8h.html#a53d1105503b5ab46384451ff4bbd0391">lsquic_conn_get_ctx</a> (<span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="keywordtype">void</span> *<a class="code" href="lsquic_8h.html#a8edf1874acb10f4b95abf8894023c3c9">lsquic_conn_get_peer_ctx</a>( <span class="keyword">const</span> <a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *lconn);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;<a class="code" href="lsquic_8h.html#a6da1350d78db9a83810a00dcee3e4944">lsquic_conn_abort</a> (<a class="code" href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a> *c);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<a class="code" href="lsquic_8h.html#ac864ff28dcaa1c09ef796a3cdcf83e27">lsquic_engine_earliest_adv_tick</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine, <span class="keywordtype">int</span> *diff);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;<span class="keywordtype">unsigned</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;<a class="code" href="lsquic_8h.html#aec59af9ee5cb005bef2e828ee8a0a4be">lsquic_engine_count_attq</a> (<a class="code" href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a> *engine, <span class="keywordtype">int</span> from_now);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;}</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;<span class="preprocessor">#endif //__LSQUIC_H__</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;</div><div class="ttc" id="lsquic_8h_html_a74d8c8f033c2e654fdb3487a2bf55d8a"><div class="ttname"><a href="lsquic_8h.html#a74d8c8f033c2e654fdb3487a2bf55d8a">lsquic_engine_has_pend_rw</a></div><div class="ttdeci">int lsquic_engine_has_pend_rw(lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_a06b9ac9ba933a060b72975640b2d79a3"><div class="ttname"><a href="lsquic_8h.html#a06b9ac9ba933a060b72975640b2d79a3">lsquic_global_cleanup</a></div><div class="ttdeci">void lsquic_global_cleanup(void)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a7297980e558cd2deafb955534520934b"><div class="ttname"><a href="structlsquic__engine__settings.html#a7297980e558cd2deafb955534520934b">lsquic_engine_settings::es_max_cfcw</a></div><div class="ttdeci">unsigned es_max_cfcw</div><div class="ttdef"><b>Definition:</b> lsquic.h:231</div></div>
<div class="ttc" id="lsquic_8h_html_abebdca40ce630ad8272752da926d7a24"><div class="ttname"><a href="lsquic_8h.html#abebdca40ce630ad8272752da926d7a24">lsquic_engine_quic_versions</a></div><div class="ttdeci">unsigned lsquic_engine_quic_versions(const lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a4bc180853f0f833b9c93bf7080ce2805">LLTS_NONE</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:751</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a578718dc886cffa23e97fa11fb26138b"><div class="ttname"><a href="structlsquic__engine__settings.html#a578718dc886cffa23e97fa11fb26138b">lsquic_engine_settings::es_ua</a></div><div class="ttdeci">const char * es_ua</div><div class="ttdef"><b>Definition:</b> lsquic.h:261</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235aa00368e0a7e30628851ab624d6e7575b">LLTS_HHMMSSMS</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:757</div></div>
<div class="ttc" id="lsquic_8h_html_a88a2040cc4b0e575b2fa2affe8597697"><div class="ttname"><a href="lsquic_8h.html#a88a2040cc4b0e575b2fa2affe8597697">lsquic_engine_send_unsent_packets</a></div><div class="ttdeci">void lsquic_engine_send_unsent_packets(lsquic_engine_t *engine)</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba5c2aa78b22ea462ae839566e19a87ea7">LSQVER_037</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:54</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a9baca38fb49c0028941a54de17a3580a"><div class="ttname"><a href="structlsquic__engine__settings.html#a9baca38fb49c0028941a54de17a3580a">lsquic_engine_settings::es_pendrw_check</a></div><div class="ttdeci">unsigned es_pendrw_check</div><div class="ttdef"><b>Definition:</b> lsquic.h:344</div></div>
<div class="ttc" id="lsquic_8h_html_ac864ff28dcaa1c09ef796a3cdcf83e27"><div class="ttname"><a href="lsquic_8h.html#ac864ff28dcaa1c09ef796a3cdcf83e27">lsquic_engine_earliest_adv_tick</a></div><div class="ttdeci">int lsquic_engine_earliest_adv_tick(lsquic_engine_t *engine, int *diff)</div></div>
<div class="ttc" id="structlsquic__out__spec_html"><div class="ttname"><a href="structlsquic__out__spec.html">lsquic_out_spec</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:415</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a8754c3fced294cfb146625c586a55a56">LLTS_YYYYMMDD_HHMMSSMS</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:762</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a1570dc65c3b4d097987f08ade3cfd993"><div class="ttname"><a href="structlsquic__engine__settings.html#a1570dc65c3b4d097987f08ade3cfd993">lsquic_engine_settings::es_support_tcid0</a></div><div class="ttdeci">int es_support_tcid0</div><div class="ttdef"><b>Definition:</b> lsquic.h:293</div></div>
<div class="ttc" id="structlsquic__engine__api_html"><div class="ttname"><a href="structlsquic__engine__api.html">lsquic_engine_api</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:450</div></div>
<div class="ttc" id="lsquic_8h_html_a199b551bc87bb77814ab4ce58abcdff9"><div class="ttname"><a href="lsquic_8h.html#a199b551bc87bb77814ab4ce58abcdff9">lsquic_stream_is_pushed</a></div><div class="ttdeci">int lsquic_stream_is_pushed(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_aeaef9bb4ecadb340cd05cfb85a6901a5"><div class="ttname"><a href="structlsquic__engine__settings.html#aeaef9bb4ecadb340cd05cfb85a6901a5">lsquic_engine_settings::es_handshake_to</a></div><div class="ttdeci">unsigned long es_handshake_to</div><div class="ttdef"><b>Definition:</b> lsquic.h:245</div></div>
<div class="ttc" id="lsquic_8h_html_a1071b7be4f2f28c5fedf957aa6309f9a"><div class="ttname"><a href="lsquic_8h.html#a1071b7be4f2f28c5fedf957aa6309f9a">lsquic_stream_write</a></div><div class="ttdeci">ssize_t lsquic_stream_write(lsquic_stream_t *s, const void *buf, size_t len)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ab6848de0e8025b08398ba43445de7405"><div class="ttname"><a href="structlsquic__engine__settings.html#ab6848de0e8025b08398ba43445de7405">lsquic_engine_settings::es_max_streams_in</a></div><div class="ttdeci">unsigned es_max_streams_in</div><div class="ttdef"><b>Definition:</b> lsquic.h:236</div></div>
<div class="ttc" id="lsquic_8h_html_a337f6adcc4ec9328e0f293d6128ee376"><div class="ttname"><a href="lsquic_8h.html#a337f6adcc4ec9328e0f293d6128ee376">lsquic_set_log_level</a></div><div class="ttdeci">int lsquic_set_log_level(const char *log_level)</div></div>
<div class="ttc" id="structlsquic__stream__if_html"><div class="ttname"><a href="structlsquic__stream__if.html">lsquic_stream_if</a></div><div class="ttdoc">The definition of callback functions call by lsquic_stream to process events. </div><div class="ttdef"><b>Definition:</b> lsquic.h:92</div></div>
<div class="ttc" id="lsquic_8h_html_aefe24851a36ebe16289a6fa3c5a1c8cc"><div class="ttname"><a href="lsquic_8h.html#aefe24851a36ebe16289a6fa3c5a1c8cc">lsquic_engine_process_conns_with_incoming</a></div><div class="ttdeci">void lsquic_engine_process_conns_with_incoming(lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_aec59af9ee5cb005bef2e828ee8a0a4be"><div class="ttname"><a href="lsquic_8h.html#aec59af9ee5cb005bef2e828ee8a0a4be">lsquic_engine_count_attq</a></div><div class="ttdeci">unsigned lsquic_engine_count_attq(lsquic_engine_t *engine, int from_now)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a2931ff6b1bc06429379debcc2c5cc5fa"><div class="ttname"><a href="structlsquic__engine__settings.html#a2931ff6b1bc06429379debcc2c5cc5fa">lsquic_engine_settings::es_cfcw</a></div><div class="ttdeci">unsigned es_cfcw</div><div class="ttdef"><b>Definition:</b> lsquic.h:209</div></div>
<div class="ttc" id="lsquic__types_8h_html_acf675534bad01d31b48d9113feff1bbb"><div class="ttname"><a href="lsquic__types_8h.html#acf675534bad01d31b48d9113feff1bbb">lsquic_cid_t</a></div><div class="ttdeci">uint64_t lsquic_cid_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:15</div></div>
<div class="ttc" id="lsquic__types_8h_html"><div class="ttname"><a href="lsquic__types_8h.html">lsquic_types.h</a></div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a5aa72ace83b5948f4d5a9ed5c72a4c4b">LLTS_CHROMELIKE</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:772</div></div>
<div class="ttc" id="lsquic_8h_html_a26335cffe38e49a6e87d94967371150d"><div class="ttname"><a href="lsquic_8h.html#a26335cffe38e49a6e87d94967371150d">lsquic_stream_get_ctx</a></div><div class="ttdeci">lsquic_stream_ctx_t * lsquic_stream_get_ctx(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a9dca1ee29ab43ca9454b6b0a8d5e2799"><div class="ttname"><a href="structlsquic__engine__settings.html#a9dca1ee29ab43ca9454b6b0a8d5e2799">lsquic_engine_settings::es_versions</a></div><div class="ttdeci">unsigned es_versions</div><div class="ttdef"><b>Definition:</b> lsquic.h:197</div></div>
<div class="ttc" id="lsquic_8h_html_a8fe1ef20026e5e68a892036005c20a19"><div class="ttname"><a href="lsquic_8h.html#a8fe1ef20026e5e68a892036005c20a19">lsquic_conn_cancel_pending_streams</a></div><div class="ttdeci">unsigned lsquic_conn_cancel_pending_streams(lsquic_conn_t *, unsigned n)</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235a874a36df2ce02e162104c2345b176185">LLTS_HHMMSSUS</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:778</div></div>
<div class="ttc" id="structlsquic__http__header_html"><div class="ttname"><a href="structlsquic__http__header.html">lsquic_http_header</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:645</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a4ba2bd3e85b8b4d0d929e31d675554e2"><div class="ttname"><a href="structlsquic__engine__settings.html#a4ba2bd3e85b8b4d0d929e31d675554e2">lsquic_engine_settings::es_idle_conn_to</a></div><div class="ttdeci">unsigned long es_idle_conn_to</div><div class="ttdef"><b>Definition:</b> lsquic.h:248</div></div>
<div class="ttc" id="structlsquic__reader_html"><div class="ttname"><a href="structlsquic__reader.html">lsquic_reader</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:604</div></div>
<div class="ttc" id="lsquic_8h_html_a8fef45d333b115d996080bb254077d8d"><div class="ttname"><a href="lsquic_8h.html#a8fef45d333b115d996080bb254077d8d">lsquic_str2ver</a></div><div class="ttdeci">enum lsquic_version lsquic_str2ver(const char *str, size_t len)</div></div>
<div class="ttc" id="lsquic__types_8h_html_a7e5d9c467ebef6810d3c5100e4684036"><div class="ttname"><a href="lsquic__types_8h.html#a7e5d9c467ebef6810d3c5100e4684036">lsquic_conn_t</a></div><div class="ttdeci">struct lsquic_conn lsquic_conn_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:21</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_addfa7e19884a81f50ca4d573b9aa16a3"><div class="ttname"><a href="structlsquic__engine__settings.html#addfa7e19884a81f50ca4d573b9aa16a3">lsquic_engine_settings::es_support_nstp</a></div><div class="ttdeci">int es_support_nstp</div><div class="ttdef"><b>Definition:</b> lsquic.h:305</div></div>
<div class="ttc" id="lsquic_8h_html_ae0b8525f7dac119f6122af564d0e17fd"><div class="ttname"><a href="lsquic_8h.html#ae0b8525f7dac119f6122af564d0e17fd">lsquic_stream_push_info</a></div><div class="ttdeci">int lsquic_stream_push_info(const lsquic_stream_t *, uint32_t *ref_stream_id, const char **headers, size_t *headers_sz)</div></div>
<div class="ttc" id="lsquic_8h_html_ac4584806627d352797a2e0cfae2e6235"><div class="ttname"><a href="lsquic_8h.html#ac4584806627d352797a2e0cfae2e6235">lsquic_logger_timestamp_style</a></div><div class="ttdeci">lsquic_logger_timestamp_style</div><div class="ttdef"><b>Definition:</b> lsquic.h:747</div></div>
<div class="ttc" id="lsquic_8h_html_adb3d3d822e9a8217d90acbf29594ae40"><div class="ttname"><a href="lsquic_8h.html#adb3d3d822e9a8217d90acbf29594ae40">lsquic_engine_packet_in</a></div><div class="ttdeci">int lsquic_engine_packet_in(lsquic_engine_t *, const unsigned char *packet_in_data, size_t packet_in_size, const struct sockaddr *sa_local, const struct sockaddr *sa_peer, void *peer_ctx)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_aaa9758b94c763b457c4a6ccc4f1e8100"><div class="ttname"><a href="structlsquic__engine__settings.html#aaa9758b94c763b457c4a6ccc4f1e8100">lsquic_engine_settings::es_proc_time_thresh</a></div><div class="ttdeci">unsigned es_proc_time_thresh</div><div class="ttdef"><b>Definition:</b> lsquic.h:378</div></div>
<div class="ttc" id="lsquic_8h_html_a60427549acdb608cc360173d817393e3"><div class="ttname"><a href="lsquic_8h.html#a60427549acdb608cc360173d817393e3">lsquic_engine_proc_all</a></div><div class="ttdeci">void lsquic_engine_proc_all(lsquic_engine_t *engine)</div></div>
<div class="ttc" id="lsquic_8h_html_aa5e0ddfd53a44561248a286caacbd114"><div class="ttname"><a href="lsquic_8h.html#aa5e0ddfd53a44561248a286caacbd114">lsquic_stream_set_priority</a></div><div class="ttdeci">int lsquic_stream_set_priority(lsquic_stream_t *s, unsigned priority)</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbaa9b8bed8ca169e8a3762308cbf0f3af3">LSQVER_039</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:67</div></div>
<div class="ttc" id="structlsquic__logger__if_html"><div class="ttname"><a href="structlsquic__logger__if.html">lsquic_logger_if</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:740</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba1956abef5d785f45310599e4fcd39c32">LSQVER_035</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:46</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_aebf95d077a1a0de005b2ddac5afdfdc4"><div class="ttname"><a href="structlsquic__engine__settings.html#aebf95d077a1a0de005b2ddac5afdfdc4">lsquic_engine_settings::es_silent_close</a></div><div class="ttdeci">int es_silent_close</div><div class="ttdef"><b>Definition:</b> lsquic.h:251</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ac5a3d759dcdf8915a98cbc3dd56d5f22"><div class="ttname"><a href="structlsquic__engine__settings.html#ac5a3d759dcdf8915a98cbc3dd56d5f22">lsquic_engine_settings::es_honor_prst</a></div><div class="ttdeci">int es_honor_prst</div><div class="ttdef"><b>Definition:</b> lsquic.h:312</div></div>
<div class="ttc" id="lsquic_8h_html_aefc66717813306c208483cccbb90ab9a"><div class="ttname"><a href="lsquic_8h.html#aefc66717813306c208483cccbb90ab9a">lsquic_engine_process_conns_to_tick</a></div><div class="ttdeci">void lsquic_engine_process_conns_to_tick(lsquic_engine_t *)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b"><div class="ttname"><a href="structlsquic__engine__settings.html#ab7b7eb8ab17eb47b8ea69d8ee8ef4a5b">lsquic_engine_settings::es_max_header_list_size</a></div><div class="ttdeci">unsigned es_max_header_list_size</div><div class="ttdef"><b>Definition:</b> lsquic.h:258</div></div>
<div class="ttc" id="lsquic_8h_html_a827d6567e492bd67c330e2d48047ad49"><div class="ttname"><a href="lsquic_8h.html#a827d6567e492bd67c330e2d48047ad49">lsquic_engine_check_settings</a></div><div class="ttdeci">int lsquic_engine_check_settings(const struct lsquic_engine_settings *settings, unsigned lsquic_engine_flags, char *err_buf, size_t err_buf_sz)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a59907a4c1080bd6eb5c5c7776b968af4"><div class="ttname"><a href="structlsquic__engine__settings.html#a59907a4c1080bd6eb5c5c7776b968af4">lsquic_engine_settings::es_rw_once</a></div><div class="ttdeci">int es_rw_once</div><div class="ttdef"><b>Definition:</b> lsquic.h:358</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4db"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4db">lsquic_version</a></div><div class="ttdeci">lsquic_version</div><div class="ttdef"><b>Definition:</b> lsquic.h:42</div></div>
<div class="ttc" id="lsquic_8h_html_a754a3d611e8c6f9a1daeb7b06c00af88"><div class="ttname"><a href="lsquic_8h.html#a754a3d611e8c6f9a1daeb7b06c00af88">lsquic_global_init</a></div><div class="ttdeci">int lsquic_global_init(int flags)</div></div>
<div class="ttc" id="lsquic_8h_html_a5e2335a871f1ab9b66e3c59b442e8cbe"><div class="ttname"><a href="lsquic_8h.html#a5e2335a871f1ab9b66e3c59b442e8cbe">lsquic_engine_connect</a></div><div class="ttdeci">int lsquic_engine_connect(lsquic_engine_t *, const struct sockaddr *peer_sa, void *peer_ctx, const char *hostname, unsigned short max_packet_size)</div></div>
<div class="ttc" id="lsquic__types_8h_html_a41d83b8270d6f12d2812203a7614b55f"><div class="ttname"><a href="lsquic__types_8h.html#a41d83b8270d6f12d2812203a7614b55f">lsquic_engine_t</a></div><div class="ttdeci">struct lsquic_engine lsquic_engine_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:18</div></div>
<div class="ttc" id="lsquic_8h_html_ada61e01ced7a7db11e5c503409c565be"><div class="ttname"><a href="lsquic_8h.html#ada61e01ced7a7db11e5c503409c565be">lsquic_stream_refuse_push</a></div><div class="ttdeci">int lsquic_stream_refuse_push(lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__packout__mem__if_html"><div class="ttname"><a href="structlsquic__packout__mem__if.html">lsquic_packout_mem_if</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:443</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_adfd0c61d3243d85d3676876ca67e6466"><div class="ttname"><a href="structlsquic__engine__settings.html#adfd0c61d3243d85d3676876ca67e6466">lsquic_engine_settings::es_support_srej</a></div><div class="ttdeci">int es_support_srej</div><div class="ttdef"><b>Definition:</b> lsquic.h:272</div></div>
<div class="ttc" id="lsquic_8h_html_a53d1105503b5ab46384451ff4bbd0391"><div class="ttname"><a href="lsquic_8h.html#a53d1105503b5ab46384451ff4bbd0391">lsquic_conn_get_ctx</a></div><div class="ttdeci">lsquic_conn_ctx_t * lsquic_conn_get_ctx(const lsquic_conn_t *c)</div></div>
<div class="ttc" id="lsquic_8h_html_a5059cabdc84335f56870c8bc7a1235e2"><div class="ttname"><a href="lsquic_8h.html#a5059cabdc84335f56870c8bc7a1235e2">lsquic_logger_init</a></div><div class="ttdeci">void lsquic_logger_init(const struct lsquic_logger_if *, void *logger_ctx, enum lsquic_logger_timestamp_style)</div></div>
<div class="ttc" id="lsquic_8h_html_aade9ff8d34cbcb33cd04a41377797fcf"><div class="ttname"><a href="lsquic_8h.html#aade9ff8d34cbcb33cd04a41377797fcf">lsquic_packets_out_f</a></div><div class="ttdeci">int(* lsquic_packets_out_f)(void *packets_out_ctx, const struct lsquic_out_spec *out_spec, unsigned n_packets_out)</div><div class="ttdef"><b>Definition:</b> lsquic.h:428</div></div>
<div class="ttc" id="lsquic_8h_html_a49f11caabdf3638d3a3217ebdd21c3af"><div class="ttname"><a href="lsquic_8h.html#a49f11caabdf3638d3a3217ebdd21c3af">lsquic_stream_writef</a></div><div class="ttdeci">ssize_t lsquic_stream_writef(lsquic_stream_t *, struct lsquic_reader *)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_ac88c5a68eac5f324a1b1524a962be26d"><div class="ttname"><a href="structlsquic__engine__settings.html#ac88c5a68eac5f324a1b1524a962be26d">lsquic_engine_settings::es_sfcw</a></div><div class="ttdeci">unsigned es_sfcw</div><div class="ttdef"><b>Definition:</b> lsquic.h:221</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a90403ce7cbb10f9ddf438cfc1bd62530"><div class="ttname"><a href="structlsquic__engine__settings.html#a90403ce7cbb10f9ddf438cfc1bd62530">lsquic_engine_settings::es_pace_packets</a></div><div class="ttdeci">int es_pace_packets</div><div class="ttdef"><b>Definition:</b> lsquic.h:385</div></div>
<div class="ttc" id="lsquic_8h_html_a7fee61cc609a4b274a4de2b41db6a9e4"><div class="ttname"><a href="lsquic_8h.html#a7fee61cc609a4b274a4de2b41db6a9e4">lsquic_stream_shutdown</a></div><div class="ttdeci">int lsquic_stream_shutdown(lsquic_stream_t *s, int how)</div></div>
<div class="ttc" id="lsquic_8h_html_afa6f69c943be0a943f28699af6ae1000"><div class="ttname"><a href="lsquic_8h.html#afa6f69c943be0a943f28699af6ae1000">lsquic_engine_new</a></div><div class="ttdeci">lsquic_engine_t * lsquic_engine_new(unsigned lsquic_engine_flags, const struct lsquic_engine_api *)</div></div>
<div class="ttc" id="lsquic_8h_html_abcf25d8301c4a2796ea13e6e306a33a9"><div class="ttname"><a href="lsquic_8h.html#abcf25d8301c4a2796ea13e6e306a33a9">lsquic_stream_flush</a></div><div class="ttdeci">int lsquic_stream_flush(lsquic_stream_t *s)</div></div>
<div class="ttc" id="lsquic_8h_html_a487bffd57fd7febe4b316be7dc0a3016"><div class="ttname"><a href="lsquic_8h.html#a487bffd57fd7febe4b316be7dc0a3016">lsquic_conn_id</a></div><div class="ttdeci">lsquic_cid_t lsquic_conn_id(const lsquic_conn_t *c)</div></div>
<div class="ttc" id="structlsquic__http__headers_html"><div class="ttname"><a href="structlsquic__http__headers.html">lsquic_http_headers</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:656</div></div>
<div class="ttc" id="lsquic_8h_html_a8edf1874acb10f4b95abf8894023c3c9"><div class="ttname"><a href="lsquic_8h.html#a8edf1874acb10f4b95abf8894023c3c9">lsquic_conn_get_peer_ctx</a></div><div class="ttdeci">void * lsquic_conn_get_peer_ctx(const lsquic_conn_t *lconn)</div></div>
<div class="ttc" id="lsquic_8h_html_aa45f5d45b56f5a0d7f881dbccebc5fd8"><div class="ttname"><a href="lsquic_8h.html#aa45f5d45b56f5a0d7f881dbccebc5fd8">lsquic_stream_priority</a></div><div class="ttdeci">unsigned lsquic_stream_priority(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="lsquic_8h_html_a822627a87eb003fd9e2e56ebded5b3f3"><div class="ttname"><a href="lsquic_8h.html#a822627a87eb003fd9e2e56ebded5b3f3">lsquic_http_header_t</a></div><div class="ttdeci">struct lsquic_http_header lsquic_http_header_t</div><div class="ttdoc">HTTP header structure. Contains header name and value. </div></div>
<div class="ttc" id="lsquic_8h_html_af8c718a3780425357d070419106e4bc8"><div class="ttname"><a href="lsquic_8h.html#af8c718a3780425357d070419106e4bc8">lsquic_logger_lopt</a></div><div class="ttdeci">int lsquic_logger_lopt(const char *optarg)</div></div>
<div class="ttc" id="structlsquic__engine__api_html_ab1c6af0c63f81cfa0c9ed6d6952b5482"><div class="ttname"><a href="structlsquic__engine__api.html#ab1c6af0c63f81cfa0c9ed6d6952b5482">lsquic_engine_api::ea_pmi</a></div><div class="ttdeci">const struct lsquic_packout_mem_if * ea_pmi</div><div class="ttdef"><b>Definition:</b> lsquic.h:460</div></div>
<div class="ttc" id="lsquic__types_8h_html_a21c289bcbb4643effba8bb75eeffd8cd"><div class="ttname"><a href="lsquic__types_8h.html#a21c289bcbb4643effba8bb75eeffd8cd">lsquic_conn_ctx_t</a></div><div class="ttdeci">struct lsquic_conn_ctx lsquic_conn_ctx_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:24</div></div>
<div class="ttc" id="lsquic__types_8h_html_a4012fdeb11382d691dfe5f025206b8f3"><div class="ttname"><a href="lsquic__types_8h.html#a4012fdeb11382d691dfe5f025206b8f3">lsquic_stream_ctx_t</a></div><div class="ttdeci">struct lsquic_stream_ctx lsquic_stream_ctx_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:30</div></div>
<div class="ttc" id="lsquic_8h_html_aae156a499af8ae01ca6f4fa307da86c6"><div class="ttname"><a href="lsquic_8h.html#aae156a499af8ae01ca6f4fa307da86c6">lsquic_engine_process_conns_with_pend_rw</a></div><div class="ttdeci">void lsquic_engine_process_conns_with_pend_rw(lsquic_engine_t *)</div></div>
<div class="ttc" id="lsquic__types_8h_html_ad286bcdd799bb3733f1d6568e25c57c6"><div class="ttname"><a href="lsquic__types_8h.html#ad286bcdd799bb3733f1d6568e25c57c6">lsquic_stream_t</a></div><div class="ttdeci">struct lsquic_stream lsquic_stream_t</div><div class="ttdef"><b>Definition:</b> lsquic_types.h:27</div></div>
<div class="ttc" id="lsquic_8h_html_a177184b3d7178dda5a3e95e539230b2b"><div class="ttname"><a href="lsquic_8h.html#a177184b3d7178dda5a3e95e539230b2b">lsquic_stream_conn</a></div><div class="ttdeci">lsquic_conn_t * lsquic_stream_conn(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="lsquic_8h_html_a9d5d9609ca70350117994e2e2e934a22"><div class="ttname"><a href="lsquic_8h.html#a9d5d9609ca70350117994e2e2e934a22">lsquic_engine_has_unsent_packets</a></div><div class="ttdeci">int lsquic_engine_has_unsent_packets(lsquic_engine_t *engine)</div></div>
<div class="ttc" id="lsquic_8h_html_aff77b794b9ca995245cc9a739b76d197"><div class="ttname"><a href="lsquic_8h.html#aff77b794b9ca995245cc9a739b76d197">lsquic_conn_going_away</a></div><div class="ttdeci">void lsquic_conn_going_away(lsquic_conn_t *conn)</div></div>
<div class="ttc" id="structlsquic__engine__settings_html"><div class="ttname"><a href="structlsquic__engine__settings.html">lsquic_engine_settings</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:188</div></div>
<div class="ttc" id="lsquic_8h_html_a2a07e308beb5e1f29ba62597c2a37b2b"><div class="ttname"><a href="lsquic_8h.html#a2a07e308beb5e1f29ba62597c2a37b2b">lsquic_conn_quic_version</a></div><div class="ttdeci">enum lsquic_version lsquic_conn_quic_version(const lsquic_conn_t *c)</div></div>
<div class="ttc" id="lsquic_8h_html_ad8f2345e0b9f8d19f7b6a1fa4e970aa8"><div class="ttname"><a href="lsquic_8h.html#ad8f2345e0b9f8d19f7b6a1fa4e970aa8">lsquic_conn_close</a></div><div class="ttdeci">void lsquic_conn_close(lsquic_conn_t *conn)</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dba2d39809298e0c7866b21fc7932504966">LSQVER_038</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:60</div></div>
<div class="ttc" id="lsquic_8h_html_a534523d663336969494d6a3721a63640"><div class="ttname"><a href="lsquic_8h.html#a534523d663336969494d6a3721a63640">lsquic_stream_id</a></div><div class="ttdeci">uint32_t lsquic_stream_id(const lsquic_stream_t *s)</div></div>
<div class="ttc" id="structlsquic__stream__if_html_afdab3bce65931517452d2ddd979596d7"><div class="ttname"><a href="structlsquic__stream__if.html#afdab3bce65931517452d2ddd979596d7">lsquic_stream_if::on_goaway_received</a></div><div class="ttdeci">void(* on_goaway_received)(lsquic_conn_t *c)</div><div class="ttdef"><b>Definition:</b> lsquic.h:104</div></div>
<div class="ttc" id="lsquic_8h_html_a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3"><div class="ttname"><a href="lsquic_8h.html#a2633ae9ee8d564f4c499f6eb0913d4dbac673a00564784af03b3b9cb747ed8af3">LSQVER_041</a></div><div class="ttdef"><b>Definition:</b> lsquic.h:72</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a85a83ab74a018c293f83d9b78a797d8e"><div class="ttname"><a href="structlsquic__engine__settings.html#a85a83ab74a018c293f83d9b78a797d8e">lsquic_engine_settings::es_progress_check</a></div><div class="ttdeci">unsigned es_progress_check</div><div class="ttdef"><b>Definition:</b> lsquic.h:327</div></div>
<div class="ttc" id="structlsquic__engine__settings_html_a8b68eb068b40eb24e5e08cab097f077a"><div class="ttname"><a href="structlsquic__engine__settings.html#a8b68eb068b40eb24e5e08cab097f077a">lsquic_engine_settings::es_support_push</a></div><div class="ttdeci">int es_support_push</div><div class="ttdef"><b>Definition:</b> lsquic.h:284</div></div>
<div class="ttc" id="lsquic_8h_html_a33bb7961ffad842a052bcd81202de5b9"><div class="ttname"><a href="lsquic_8h.html#a33bb7961ffad842a052bcd81202de5b9">lsquic_conn_n_pending_streams</a></div><div class="ttdeci">unsigned lsquic_conn_n_pending_streams(const lsquic_conn_t *)</div></div>
<div class="ttc" id="lsquic_8h_html_a6da1350d78db9a83810a00dcee3e4944"><div class="ttname"><a href="lsquic_8h.html#a6da1350d78db9a83810a00dcee3e4944">lsquic_conn_abort</a></div><div class="ttdeci">void lsquic_conn_abort(lsquic_conn_t *c)</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>