<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libguac: guacamole/plugin-constants.h File Reference</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>
<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">libguac
   &#160;<span id="projectnumber">0.9.14</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></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_6bb9fad85c98b48a11165f494b9f53ce.html">guacamole</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">plugin-constants.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Constants related to client plugins.  
<a href="#details">More...</a></p>

<p><a href="plugin-constants_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ac328a06358d3e07e10999e556f77c05a"><td class="memItemLeft" align="right" valign="top"><a id="ac328a06358d3e07e10999e556f77c05a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin-constants_8h.html#ac328a06358d3e07e10999e556f77c05a">GUAC_PROTOCOL_LIBRARY_PREFIX</a>&#160;&#160;&#160;&quot;libguac-client-&quot;</td></tr>
<tr class="memdesc:ac328a06358d3e07e10999e556f77c05a"><td class="mdescLeft">&#160;</td><td class="mdescRight">String prefix which begins the library filename of all client plugins. <br /></td></tr>
<tr class="separator:ac328a06358d3e07e10999e556f77c05a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3601bb5aaa3ca309987f70bd48005fd"><td class="memItemLeft" align="right" valign="top"><a id="af3601bb5aaa3ca309987f70bd48005fd"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin-constants_8h.html#af3601bb5aaa3ca309987f70bd48005fd">GUAC_PROTOCOL_LIBRARY_SUFFIX</a>&#160;&#160;&#160;&quot;.so&quot;</td></tr>
<tr class="memdesc:af3601bb5aaa3ca309987f70bd48005fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">String suffix which ends the library filename of all client plugins. <br /></td></tr>
<tr class="separator:af3601bb5aaa3ca309987f70bd48005fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ce2e3a2b6be66e9ab382fb8d2ab2621"><td class="memItemLeft" align="right" valign="top"><a id="a4ce2e3a2b6be66e9ab382fb8d2ab2621"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin-constants_8h.html#a4ce2e3a2b6be66e9ab382fb8d2ab2621">GUAC_PROTOCOL_NAME_LIMIT</a>&#160;&#160;&#160;256</td></tr>
<tr class="memdesc:a4ce2e3a2b6be66e9ab382fb8d2ab2621"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum number of characters (COUNTING NULL TERMINATOR) to allow for protocol names within the library filename of client plugins. <br /></td></tr>
<tr class="separator:a4ce2e3a2b6be66e9ab382fb8d2ab2621"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03c00580f4455d35c1ed33ed4dcfe2fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin-constants_8h.html#a03c00580f4455d35c1ed33ed4dcfe2fe">GUAC_PROTOCOL_LIBRARY_LIMIT</a></td></tr>
<tr class="memdesc:a03c00580f4455d35c1ed33ed4dcfe2fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum number of characters (INCLUDING NULL TERMINATOR) that a character array containing the concatenation of the library prefix, protocol name, and suffix can contain, assuming the protocol name is limited to GUAC_PROTOCOL_NAME_LIMIT characters.  <a href="#a03c00580f4455d35c1ed33ed4dcfe2fe">More...</a><br /></td></tr>
<tr class="separator:a03c00580f4455d35c1ed33ed4dcfe2fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Constants related to client plugins. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a03c00580f4455d35c1ed33ed4dcfe2fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03c00580f4455d35c1ed33ed4dcfe2fe">&#9670;&nbsp;</a></span>GUAC_PROTOCOL_LIBRARY_LIMIT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define GUAC_PROTOCOL_LIBRARY_LIMIT</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(                                  \</div><div class="line">                                                                       \</div><div class="line">      sizeof(<a class="code" href="plugin-constants_8h.html#ac328a06358d3e07e10999e556f77c05a">GUAC_PROTOCOL_LIBRARY_PREFIX</a>) - 1 <span class="comment">/* &quot;libguac-client-&quot; */</span> \</div><div class="line">    +        <a class="code" href="plugin-constants_8h.html#a4ce2e3a2b6be66e9ab382fb8d2ab2621">GUAC_PROTOCOL_NAME_LIMIT</a>      - 1 <span class="comment">/* [up to 256 chars] */</span> \</div><div class="line">    + <span class="keyword">sizeof</span>(<a class="code" href="plugin-constants_8h.html#af3601bb5aaa3ca309987f70bd48005fd">GUAC_PROTOCOL_LIBRARY_SUFFIX</a>) - 1 <span class="comment">/* &quot;.so&quot;             */</span> \</div><div class="line">    + 1                                        <span class="comment">/* NULL terminator   */</span> \</div><div class="line">                                                                       \</div><div class="line">)</div><div class="ttc" id="plugin-constants_8h_html_af3601bb5aaa3ca309987f70bd48005fd"><div class="ttname"><a href="plugin-constants_8h.html#af3601bb5aaa3ca309987f70bd48005fd">GUAC_PROTOCOL_LIBRARY_SUFFIX</a></div><div class="ttdeci">#define GUAC_PROTOCOL_LIBRARY_SUFFIX</div><div class="ttdoc">String suffix which ends the library filename of all client plugins. </div><div class="ttdef"><b>Definition:</b> plugin-constants.h:37</div></div>
<div class="ttc" id="plugin-constants_8h_html_a4ce2e3a2b6be66e9ab382fb8d2ab2621"><div class="ttname"><a href="plugin-constants_8h.html#a4ce2e3a2b6be66e9ab382fb8d2ab2621">GUAC_PROTOCOL_NAME_LIMIT</a></div><div class="ttdeci">#define GUAC_PROTOCOL_NAME_LIMIT</div><div class="ttdoc">The maximum number of characters (COUNTING NULL TERMINATOR) to allow for protocol names within the li...</div><div class="ttdef"><b>Definition:</b> plugin-constants.h:43</div></div>
<div class="ttc" id="plugin-constants_8h_html_ac328a06358d3e07e10999e556f77c05a"><div class="ttname"><a href="plugin-constants_8h.html#ac328a06358d3e07e10999e556f77c05a">GUAC_PROTOCOL_LIBRARY_PREFIX</a></div><div class="ttdeci">#define GUAC_PROTOCOL_LIBRARY_PREFIX</div><div class="ttdoc">String prefix which begins the library filename of all client plugins. </div><div class="ttdef"><b>Definition:</b> plugin-constants.h:32</div></div>
</div><!-- fragment -->
<p>The maximum number of characters (INCLUDING NULL TERMINATOR) that a character array containing the concatenation of the library prefix, protocol name, and suffix can contain, assuming the protocol name is limited to GUAC_PROTOCOL_NAME_LIMIT characters. </p>

</div>
</div>
</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.13
</small></address>
        <!-- Google Analytics -->
        <script type="text/javascript">
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          ga('create', 'UA-75289145-1', 'auto');
          ga('send', 'pageview');
        </script>
</body>
</html>
