lwres_getrrsetbyname.html revision 71c66a876ecca77923638d3f94cc0783152b2f03
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder<!--
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder - Copyright (C) 2004, 2005 Internet Systems Consortium, Inc. ("ISC")
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder - Copyright (C) 2000, 2001 Internet Software Consortium.
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder -
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - Permission to use, copy, modify, and distribute this software for any
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder - purpose with or without fee is hereby granted, provided that the above
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - copyright notice and this permission notice appear in all copies.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder -
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
d8c71aacc9f1c8cd40a8ad8dcdad9be8854b849fChristian Maeder - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - PERFORMANCE OF THIS SOFTWARE.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder-->
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder<!-- $Id: lwres_getrrsetbyname.html,v 1.20 2006/06/29 13:03:32 marka Exp $ -->
c90087f49069855bf684b699f9ca1e2d65eac20bChristian Maeder<html>
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder<head>
01e383014b555bbcf639c0ca60c5810b3eff83c0Christian Maeder<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
83394c6b6e6de128e71b67c9251ed7a84485d082Christian Maeder<title>lwres_getrrsetbyname</title>
83394c6b6e6de128e71b67c9251ed7a84485d082Christian Maeder<meta name="generator" content="DocBook XSL Stylesheets V1.70.1">
abf2487c3aece95c371ea89ac64319370dcb6483Klaus Luettich</head>
ce8b15da31cd181b7e90593cbbca98f47eda29d6Till Mossakowski<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en">
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<a name="id2482688"></a><div class="titlepage"></div>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<div class="refnamediv">
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<h2>Name</h2>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<p>lwres_getrrsetbyname, lwres_freerrset &#8212; retrieve DNS records</p>
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder</div>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<div class="refsynopsisdiv">
2e2094a642e3775b0d76b890556407941d3a53b6Christian Maeder<h2>Synopsis</h2>
2e2094a642e3775b0d76b890556407941d3a53b6Christian Maeder<div class="funcsynopsis">
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<pre class="funcsynopsisinfo">#include &lt;lwres/netdb.h&gt;</pre>
2e2094a642e3775b0d76b890556407941d3a53b6Christian Maeder<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder<tr>
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder<td><code class="funcdef">
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maederint
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<b class="fsfunc">lwres_getrrsetbyname</b>(</code></td>
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder<td>�</td>
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich<td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<var class="pdparam">hostname</var>, </td>
4d56f2fa72e4aec20eb827c11ed49c8cbb7014bdChristian Maeder</tr>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<tr>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<td>�</td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<td>�</td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<var class="pdparam">hostname</var>, </td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder</tr>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<tr>
d4892fa7401ceef014ea59d2d900773eaf88fcbdChristian Maeder<td>�</td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<td>�</td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder<var class="pdparam">rdclass</var>, </td>
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder</tr>
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich<tr>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<td>�</td>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<td>�</td>
55adfe57a4de1f36adc3e3bfc16f342e44a7d444Christian Maeder<td>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder<var class="pdparam">rdtype</var>, </td>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder</tr>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<tr>
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder<td>�</td>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<td>�</td>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<td>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder<var class="pdparam">flags</var>, </td>
2e2094a642e3775b0d76b890556407941d3a53b6Christian Maeder</tr>
f13d1e86e58da53680e78043e8df182eed867efbChristian Maeder<tr>
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder<td>�</td>
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder<td>�</td>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<td>
a2d6702f18737cc5fff8e8631c08f221f8375c4bChristian Maeder<var class="pdparam">res</var><code>)</code>;</td>
c6fcd42c6d6d9dae8c7835c24fcb7ce8531a9050Christian Maeder</tr>
31c49f2fa23d4ac089f35145d80a224deb6ea7e4Till Mossakowski</table>
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus Luettich<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<tr>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder<td><code class="funcdef">
abf2487c3aece95c371ea89ac64319370dcb6483Klaus Luettichvoid
8cacad2a09782249243b80985f28e9387019fe40Christian Maeder<b class="fsfunc">lwres_freerrset</b>(</code></td>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<td>�</td>
d3ae0072823e2ef0d41d4431fcc768e66489c20eChristian Maeder<td>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder<var class="pdparam">rrset</var><code>)</code>;</td>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder</tr>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder<tr>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder<td>�</td>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder<td>�</td>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<td>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<var class="pdparam">rrset</var><code>)</code>;</td>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder</tr>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder</table>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder</div>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder<p>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder The following structures are used:
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder </p>
c9acb8681bcc512245b4f0d1a9f2b189c60e10d4Christian Maeder<pre class="programlisting">
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maederstruct rdatainfo {
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder unsigned int rdi_length; /* length of data */
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder unsigned char *rdi_data; /* record data */
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder};
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder</pre>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<p>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder </p>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<pre class="programlisting">
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederstruct rrsetinfo {
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder unsigned int rri_flags; /* RRSET_VALIDATED... */
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder unsigned int rri_rdclass; /* class number */
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder unsigned int rri_rdtype; /* RR type number */
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder unsigned int rri_ttl; /* time to live */
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder unsigned int rri_nrdatas; /* size of rdatas array */
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder unsigned int rri_nsigs; /* size of sigs array */
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder char *rri_name; /* canonical name */
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder struct rdatainfo *rri_rdatas; /* individual records */
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder struct rdatainfo *rri_sigs; /* individual signatures */
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder};
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder</pre>
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder<p>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder </p>
6ff7a91875597d6e4dfaa68c79187d01473e8341Christian Maeder</div>
6ff7a91875597d6e4dfaa68c79187d01473e8341Christian Maeder<div class="refsect1" lang="en">
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<a name="id2549472"></a><h2>DESCRIPTION</h2>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<p><code class="function">lwres_getrrsetbyname()</code>
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder gets a set of resource records associated with a
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder <em class="parameter"><code>hostname</code></em>, <em class="parameter"><code>class</code></em>,
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder and <em class="parameter"><code>type</code></em>.
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder <em class="parameter"><code>hostname</code></em> is a pointer a to
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder null-terminated string. The <em class="parameter"><code>flags</code></em> field
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder is currently unused and must be zero.
88318aafc287e92931dceffbb943d58a9310001dChristian Maeder </p>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<p>
a3c6d8e0670bf2aa71bc8e2a3b1f45d56dd65e4cChristian Maeder After a successful call to
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <code class="function">lwres_getrrsetbyname()</code>,
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <em class="parameter"><code>*res</code></em> is a pointer to an
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <span class="type">rrsetinfo</span> structure, containing a list of one or
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder more <span class="type">rdatainfo</span> structures containing resource
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder records and potentially another list of <span class="type">rdatainfo</span>
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder structures containing SIG resource records associated with those
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder records. The members <code class="constant">rri_rdclass</code> and
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder <code class="constant">rri_rdtype</code> are copied from the parameters.
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder <code class="constant">rri_ttl</code> and <code class="constant">rri_name</code>
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder are properties of the obtained rrset. The resource records
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder contained in <code class="constant">rri_rdatas</code> and
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <code class="constant">rri_sigs</code> are in uncompressed DNS wire
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder format. Properties of the rdataset are represented in the
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <code class="constant">rri_flags</code> bitfield. If the RRSET_VALIDATED
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder bit is set, the data has been DNSSEC validated and the
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder signatures verified.
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder </p>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<p>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder All of the information returned by
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder <code class="function">lwres_getrrsetbyname()</code> is dynamically
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder allocated: the <code class="constant">rrsetinfo</code> and
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <code class="constant">rdatainfo</code> structures, and the canonical
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder host name strings pointed to by the
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder <code class="constant">rrsetinfo</code>structure.
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder Memory allocated for the dynamically allocated structures
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder created by a successful call to
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder <code class="function">lwres_getrrsetbyname()</code> is released by
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder <code class="function">lwres_freerrset()</code>.
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder <em class="parameter"><code>rrset</code></em> is a pointer to a <span class="type">struct
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich rrset</span> created by a call to
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <code class="function">lwres_getrrsetbyname()</code>.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder </p>
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich<p></p>
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich</div>
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich<div class="refsect1" lang="en">
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<a name="id2549652"></a><h2>RETURN VALUES</h2>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder<p><code class="function">lwres_getrrsetbyname()</code>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder returns zero on success, and one of the following error codes if
c9acb8681bcc512245b4f0d1a9f2b189c60e10d4Christian Maeder an error occurred:
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder </p>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder<div class="variablelist"><dl>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder<dt><span class="term"><code class="constant">ERRSET_NONAME</code></span></dt>
0c355dd0b739631ee472f9a656e266be27fa4e64Christian Maeder<dd><p>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder the name does not exist
d272062059eea4d7479e1c6e8517469f02f61287Christian Maeder </p></dd>
0cfef6179a1bfec4f07f460686dd629a27b4b778Christian Maeder<dt><span class="term"><code class="constant">ERRSET_NODATA</code></span></dt>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<dd><p>
83394c6b6e6de128e71b67c9251ed7a84485d082Christian Maeder the name exists, but does not have data of the desired type
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder </p></dd>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<dt><span class="term"><code class="constant">ERRSET_NOMEMORY</code></span></dt>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<dd><p>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder memory could not be allocated
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder </p></dd>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder<dt><span class="term"><code class="constant">ERRSET_INVAL</code></span></dt>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<dd><p>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder a parameter is invalid
9df11f85fd7f8c4745d64464876e84ec4e263692Christian Maeder </p></dd>
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers<dt><span class="term"><code class="constant">ERRSET_FAIL</code></span></dt>
010c56c4cf12dd7977ca36efe85219b91e265ee3Christian Maeder<dd><p>
fb328c4f646dd3dd78a9391c5cb58450a3dd0aa9Klaus Luettich other failure
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder </p></dd>
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers<dt><span class="term"><code class="constant"></code></span></dt>
0799b5dc3f06d2640e66e9ab54b8b217348fd719Christian Maeder<dd><p></p></dd>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder</dl></div>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<p>
010c56c4cf12dd7977ca36efe85219b91e265ee3Christian Maeder
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers </p>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder</div>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<div class="refsect1" lang="en">
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder<a name="id2549752"></a><h2>SEE ALSO</h2>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder<p><span class="citerefentry"><span class="refentrytitle">lwres</span>(3)</span>.
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder </p>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder</div>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder</div></body>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder</html>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder