<p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417">View Change</a></p><p>28 comments:</p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/include/osmocom/gprs/gprs_ns2.h">File include/osmocom/gprs/gprs_ns2.h:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/include/osmocom/gprs/gprs_ns2.h@26">Patch Set #24, Line 26:</a> <code style="font-family:monospace,monospace">/* TODO: remove ! */</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">so we have a TODO: remove on a struct in a public header? That looks wrong ;)</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/include/osmocom/gprs/gprs_ns2.h@40">Patch Set #24, Line 40:</a> <code style="font-family:monospace,monospace">      NS2_VC_MODE_BLOCKRESET, /* The will only use ALIVE/ACK no initiation */</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">"The VC will" […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/include/osmocom/gprs/gprs_ns2.h@85">Patch Set #24, Line 85:</a> <code style="font-family:monospace,monospace">                        /* TODO: implement resource distribution */</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">So future ABI break? […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">I'll out comment the link selector parameter.<br>If we add stuff here, it won't ABI breakage, since it's only adding things.</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/23/include/osmocom/gprs/gprs_ns2.h">File include/osmocom/gprs/gprs_ns2.h:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/23/include/osmocom/gprs/gprs_ns2.h@26">Patch Set #23, Line 26:</a> <code style="font-family:monospace,monospace">/* TODO: remove ! */</code></p><p style="white-space: pre-wrap; word-wrap: break-word;">TODO remove</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/22/include/osmocom/gprs/gprs_ns2.h">File include/osmocom/gprs/gprs_ns2.h:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/22/include/osmocom/gprs/gprs_ns2.h@25">Patch Set #22, Line 25:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">enum gprs_ns2_signal_ns {<br>      S_NSVC_RESET, /* when a NSVC is in reset */<br>   S_NSVC_BLOCK, /* when a NSVC become blocked */<br>        S_NSVC_UNBLOCK, /* when a NSVC become unblocked */<br>    S_NSVC_ALIVE_EXP, /* Tns-alive expired more than N times */<br>   S_NSVC_REPLACED, /* nsvc object is replaced (sets old_nsvc) */<br>        S_NSVC_MISMATCH, /* got an unexpected IE (sets msg, pdu_type, ie_type) */<br>     S_NSVC_DELETED, /* when a NSVC gets deleted */<br>        S_SNS_CONFIGURED, /* IP-SNS configuration completed */<br>        S_NSE_AVAILABLE, /* NSE is available */<br>       S_NSE_UNAVAILABLE, /* NSE is unavailable */<br>};<br><br>struct gprs_ns2_signal_data {<br>      struct gprs_ns2_nse *nse;<br>     uint16_t nsei;<br>        struct gprs_ns2_vc *nsvc;<br>     struct gprs_ns2_vc *old_nsvc;<br> uint8_t cause;<br>        uint8_t pdu_type;<br>     uint8_t ie_type;<br>      struct msgb *msg;<br>};<br><br>enum gprs_ns2_vc_mode {<br>      NS2_VC_MODE_ALIVE, /* The VC will use RESET/BLOCK/UNBLOCK to start the connection and do ALIVE/ACK */<br> NS2_VC_MODE_BLOCKRESET, /* The will only use ALIVE/ACK no initiation */<br>};<br><br>/*! Osmoco NS events */<br>enum gprs_ns2_evt {<br>   GPRS_NS_EVT_UNIT_DATA,<br>};<br><br>/* callbacks for messages transfer */<br>/*! Osmocom GPRS callback function type */<br>typedef int gprs_ns2_cb_t(enum gprs_ns2_evt event, struct msgb *msg,<br>                   uint16_t nsei, uint16_t bvci);<br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">I agree. I wasn't sure if it would be good to add even more time into it.</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/22/include/osmocom/gprs/gprs_ns2.h@65">Patch Set #22, Line 65:</a> <code style="font-family:monospace,monospace">gprs_ns2_cb_t</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">this would then be a call-back that receives msgb-wrapped osmo_prim from NS to the NS-user</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/22/include/osmocom/gprs/gprs_ns2.h@71">Patch Set #22, Line 71:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">int gprs_ns2_send(struct gprs_ns2_inst *inst,struct msgb *msg);<br>int gprs_ns2_send_nse(struct gprs_ns2_nse *nse, struct msgb *msg);<br>int gprs_ns2_send_nsei(struct gprs_ns2_inst *nsi, uint16_t nsei, struct msgb *msg);<br>int gprs_ns2_recv_vc(struct gprs_ns2_inst *nsi,<br>                   struct gprs_ns2_vc *nsvc,<br>                     struct msgb *msg);<br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">and those would basically be convenience wrapper functions which generate a msgb-wrapped osmo_prim s […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/22/include/osmocom/gprs/gprs_ns2.h@86">Patch Set #22, Line 86:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">int gprs_ns2_tx_block(struct gprs_ns2_vc *nsvc, uint8_t cause);<br>int gprs_ns2_tx_block_ack(struct gprs_ns2_vc *nsvc);<br><br>int gprs_ns2_tx_reset(struct gprs_ns2_vc *nsvc, uint8_t cause);<br>int gprs_ns2_tx_reset_ack(struct gprs_ns2_vc *nsvc);<br><br>int gprs_ns2_tx_unblock(struct gprs_ns2_vc *nsvc);<br>int gprs_ns2_tx_unblock_ack(struct gprs_ns2_vc *nsvc);<br><br>int gprs_ns2_tx_alive(struct gprs_ns2_vc *nsvc);<br>int gprs_ns2_tx_alive_ack(struct gprs_ns2_vc *nsvc);<br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Ack</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/22/include/osmocom/gprs/gprs_ns2.h@104">Patch Set #22, Line 104:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;">nt gprs_ns2_tx_sns_ack(struct gprs_ns2_vc *nsvc, uint8_t trans_id, uint8_t *cause,<br>                    const struct gprs_ns_ie_ip4_elem *ip4_elems,<br>                  unsigned int num_ip4_elems,<br>                   const struct gprs_ns_ie_ip6_elem *ip6_elems,<br>                  unsigned int num_ip6_elems);<br>int gprs_ns2_tx_sns_config(struct gprs_ns2_vc *nsvc, bool end_flag,<br>                        const struct gprs_ns_ie_ip4_elem *ip4_elems,<br>                          unsigned int num_ip4_elems,<br>                           const struct gprs_ns_ie_ip6_elem *ip6_elems,<br>                          unsigned int num_ip6_elems);<br>int gprs_ns2_tx_sns_config_ack(struct gprs_ns2_vc *nsvc, uint8_t *cause);<br>int gprs_ns2_tx_sns_size(struct gprs_ns2_vc *nsvc, bool reset_flag, uint16_t max_nr_nsvc,<br>                  int ip4_ep_nr, int ip6_ep_nr);<br>int gprs_ns2_tx_sns_size_ack(struct gprs_ns2_vc *nsvc, uint8_t *cause);<br></pre></blockquote></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Ack</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Done</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c">File src/gb/gprs_ns2.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@217">Patch Set #24, Line 217:</a> <code style="font-family:monospace,monospace">                 snprintf(buf, buf_len, "udp)%s:%u<%u>%s:%u",</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Ideally IPv6 should be enclosed in between breackets ([]) […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@227">Patch Set #24, Line 227:</a> <code style="font-family:monospace,monospace">             snprintf(buf, buf_len, "frgre)");</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">missing break?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@229">Patch Set #24, Line 229:</a> <code style="font-family:monospace,monospace">               snprintf(buf, buf_len, "e1)");</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">missing break?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@248">Patch Set #24, Line 248:</a> <code style="font-family:monospace,monospace">  char *buf = talloc_size(ctx, INET6_ADDRSTRLEN+10);</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">shouldn't this be INET6_ADDRSTRLEN*2 ? and +10 doesn't seem enough to me.</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@346">Patch Set #24, Line 346:</a> <code style="font-family:monospace,monospace">     llist_add(&nsvc->list, &nse->nsvc);</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Easiest here is to add to several lists at the end before returning, then you can drop 2 lines from  […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@395">Patch Set #24, Line 395:</a> <code style="font-family:monospace,monospace">     if (nsvc->priv && nsvc->bind->free_vc) {</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">uneeded {}</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@408">Patch Set #24, Line 408:</a> <code style="font-family:monospace,monospace">             "GPRS/NS");</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">move to be in line with "(".</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@420">Patch Set #24, Line 420:</a> <code style="font-family:monospace,monospace"> * \param[out] result</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">this documenttion needs updating.</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@554">Patch Set #24, Line 554:</a> <code style="font-family:monospace,monospace"> * \param[out] reject A message filled to be sent back. Only used in failure cases.</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">docuemntation needs updating</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@675">Patch Set #24, Line 675:</a> <code style="font-family:monospace,monospace"> * \brief gprs_ns2_ip_connect</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">documentation needs updating.</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2.c@882">Patch Set #24, Line 882:</a> <code style="font-family:monospace,monospace">static bool gprs_fsm_vc_registered = false;</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">what about this?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">I don't care. Just took this over from NS1. What would be a better solution? Create a second function to init it? Or should I use a constructor?</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_frgre.c">File src/gb/gprs_ns2_frgre.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_frgre.c@477">Patch Set #24, Line 477:</a> <code style="font-family:monospace,monospace"> /* FIXME: actually send the data here instead of nsip_sendmsg() */</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">This is yet not implemented?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Yes. I don't have a test case or a device to test against it. I would postpone this code until we have a real setup. The whole file also needs more work (e.g. IPv6 extension header).</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_frgre.c@524">Patch Set #24, Line 524:</a> <code style="font-family:monospace,monospace">             rc = handle_nsfrgre_read(bfd);</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">Usual stuff: check if handle_nsfrgre_read() can cause the struct holding bfd to be freed. […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Did I missed the free?</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_message.c">File src/gb/gprs_ns2_message.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_message.c@43">Patch Set #24, Line 43:</a> <code style="font-family:monospace,monospace">#define ERR_IF_NSVC_USES_SNS(nsvc, reason)                                                         \</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">i'll remove this</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_message.c@64">Patch Set #24, Line 64:</a> <code style="font-family:monospace,monospace">int gprs_ns2_validate_reset(struct gprs_ns2_vc *nsvc, struct msgb *msg, struct tlv_parsed *tp, uint8_t *cause)</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">returning 1 or 0? this looks strange...</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">what do you mean?</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_sns.c">File src/gb/gprs_ns2_sns.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_sns.c@268">Patch Set #24, Line 268:</a> <code style="font-family:monospace,monospace"> remote.u.sin6.sin6_port = ip6->udp_port;</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">be careful, you may need htons() here</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">no</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_sns.c@301">Patch Set #24, Line 301:</a> <code style="font-family:monospace,monospace">             remote.u.sin.sin_port = ip4->udp_port;</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">htons?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">no</p></li><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_sns.c@336">Patch Set #24, Line 336:</a> <code style="font-family:monospace,monospace">              remote.u.sin6.sin6_port = ip6->udp_port;</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">htons?</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">no</p></li></ul></li><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_vc_fsm.c">File src/gb/gprs_ns2_vc_fsm.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.osmocom.org/c/libosmocore/+/19417/24/src/gb/gprs_ns2_vc_fsm.c@121">Patch Set #24, Line 121:</a> <code style="font-family:monospace,monospace">    { GPRS_NS2_EV_BLOCK,    "BLOCK" },</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">weird indentation</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">Ack</p></li></ul></li></ul><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/19417">change 19417</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/19417"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3525beef205588dfab9d3880a34115f1a2676e48 </div>
<div style="display:none"> Gerrit-Change-Number: 19417 </div>
<div style="display:none"> Gerrit-PatchSet: 24 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Assignee: daniel <daniel@totalueberwachung.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-CC: daniel <daniel@totalueberwachung.de> </div>
<div style="display:none"> Gerrit-CC: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Comment-Date: Tue, 08 Sep 2020 21:52:43 +0000 </div>
<div style="display:none"> Gerrit-HasComments: Yes </div>
<div style="display:none"> Gerrit-Has-Labels: No </div>
<div style="display:none"> Comment-In-Reply-To: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Comment-In-Reply-To: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Comment-In-Reply-To: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: comment </div>