<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"JetBrains Mono";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLVorformatiertZchn
        {mso-style-name:"HTML Vorformatiert Zchn";
        mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert";
        font-family:Consolas;
        mso-fareast-language:DE;}
span.gmaildefault
        {mso-style-name:gmail_default;}
span.E-MailFormatvorlage23
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">just creating a shared library only with the MODULE_VERSION export will not work. Kamailio expects more function in the module to be present and also other exports.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">One way to start is probably to take a small module (like cfgutils) and use this as foundation for extension. The print module might be also ok, but as it comes from the SER side, it
 is missing e.g. the KEMI support.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Henning<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">-- <o:p>
</o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Henning Westerholt –
</span><span style="mso-fareast-language:EN-US"><a href="https://skalatan.de/blog/"><span lang="EN-GB" style="color:#0563C1">https://skalatan.de/blog/</span></a></span><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US">Kamailio services –
</span><span style="mso-fareast-language:EN-US"><a href="https://gilawa.com/"><span lang="EN-GB" style="color:#0563C1">https://gilawa.com</span></a></span><span style="mso-fareast-language:EN-US">
<span lang="EN-GB"><o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-left:35.4pt"><b>From:</b> sr-dev <sr-dev-bounces@lists.kamailio.org>
<b>On Behalf Of </b>Tyler Moore<br>
<b>Sent:</b> Friday, April 24, 2020 10:14 PM<br>
<b>To:</b> sr-dev@lists.kamailio.org<br>
<b>Subject:</b> [sr-dev] Custom kamailio modules<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">Hey devs got a question about loading custom modules.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">This is my first kamailio module so if I am missing some gotchas please refer me to the proper documentation.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">I created a shared lib and included the module version info like so:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<pre style="margin-left:35.4pt;background:#2B2B2B"><span style="font-family:"JetBrains Mono",serif;color:#BBB529">#define </span><span style="font-family:"JetBrains Mono",serif;color:#908B25">NAME </span><span style="font-family:"JetBrains Mono",serif;color:#6A8759">"kamailio"<br></span><span style="font-family:"JetBrains Mono",serif;color:#BBB529">#define </span><span style="font-family:"JetBrains Mono",serif;color:#908B25">VERSION </span><span style="font-family:"JetBrains Mono",serif;color:#6A8759">"5.3"<br></span><span style="font-family:"JetBrains Mono",serif;color:#BBB529">#define </span><span style="font-family:"JetBrains Mono",serif;color:#908B25">ARCH </span><span style="font-family:"JetBrains Mono",serif;color:#6A8759">"x86_64"<br></span><span style="font-family:"JetBrains Mono",serif;color:#BBB529">#define </span><span style="font-family:"JetBrains Mono",serif;color:#908B25">OS_QUOTED </span><span style="font-family:"JetBrains Mono",serif;color:#6A8759">"GNU/Linux"</span><span style="font-family:"JetBrains Mono",serif;color:#A9B7C6"><o:p></o:p></span></pre>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p style="margin-left:35.4pt"><span class="gmaildefault"><span style="font-family:"Arial",sans-serif;color:black">...</span></span><span style="font-family:"Arial",sans-serif;color:black"><o:p></o:p></span></p>
<pre style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:35.4pt;background:#2B2B2B"><span style="font-family:"JetBrains Mono",serif;color:#A9B7C6"><br></span><span style="font-family:"JetBrains Mono",serif;color:#908B25">MODULE_VERSION</span><span style="font-family:"JetBrains Mono",serif;color:#A9B7C6"><o:p></o:p></span></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">I tried loading the module in a vanilla kamailio 5.3 install on debian 9 (stretch) and it seems sr_module.c can't find the module version info:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">ERROR: <core> [core/sr_module.c:325]: version_control(): no version info in module </usr/lib/x86_64-linux-gnu/kamailio/modules/dsiprouter.so>: /usr/lib/x86_64-linux-gnu/kamailio/modules/dsiprouter.so:
 undefined symbol: module_version<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">But MODULE_VERSION should be defining this variable..<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">Running string on the shared lib shows it is being defined:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">> strings lib/dsiprouter.so | grep module_version<br>
module_version<br>
MODULE_VERSION char *module_version=SER_FULL_VERSION; char *module_flags=SER_COMPILE_FLAGS; unsigned int module_interface_ver=MODULE_INTERFACE_VER;<br>
module_version<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif">Is this a linking issue? Why does is seem that module_versino is referenced before being defined when i'm following the example from <a href="https://github.com/kamailio/kamailio/blob/5.1/src/modules/print/print.c">https://github.com/kamailio/kamailio/blob/5.1/src/modules/print/print.c</a>
 ?<o:p></o:p></span></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p style="margin-left:35.4pt"><span style="font-family:"Arial",sans-serif;color:black">Regards,</span><span style="color:black"><o:p></o:p></span></p>
<p style="margin-left:42.9pt"><span style="font-family:"Arial",sans-serif;color:black"><a href="https://devopsec.net/" target="_blank" title="x-name"><strong><span style="font-family:"Arial",sans-serif;color:black">Tyler Moore</span></strong></a> <br>
<a href="http://www.google.com/search?q=full+stack+software+engineer+job+description" target="_blank"><span style="color:black">Full Stack Software Engineer</span></a><br>
<a href="http://goflyball.com/" target="_blank"><span style="color:black">Flyball Labs</span></a><br>
Office: <a href="tel:8889072085;ext=34" target="_blank"><span style="color:black">888-907-2085, ext: 34</span></a><br>
Cell: <a href="tel:2489092769" target="_blank"><span style="color:black">248-909-2769</span></a><br>
Email: <a href="mailto:tmoore@goflyball.com" target="_blank"><span style="color:black">tmoore@goflyball.com</span></a></span><span style="color:black"><o:p></o:p></span></p>
<p style="margin-left:42.9pt"><span style="color:black"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>