<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13607">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">library: Add PAP_Types for PPP Authentication Protocol (RFC 1334)<br><br>Change-Id: I31cb766bb701b8107df5de978d2b0b085977045a<br>---<br>A library/PAP_Types.ttcn<br>1 file changed, 90 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/07/13607/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/PAP_Types.ttcn b/library/PAP_Types.ttcn</span><br><span>new file mode 100644</span><br><span>index 0000000..4e3f14f</span><br><span>--- /dev/null</span><br><span>+++ b/library/PAP_Types.ttcn</span><br><span>@@ -0,0 +1,90 @@</span><br><span style="color: hsl(120, 100%, 40%);">+module PAP_Types {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* (C) 2019 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(120, 100%, 40%);">+ * All rights reserved.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Released under the terms of GNU General Public License, Version 2 or</span><br><span style="color: hsl(120, 100%, 40%);">+ * (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* RFC1334 */</span><br><span style="color: hsl(120, 100%, 40%);">+type enumerated PapCode {</span><br><span style="color: hsl(120, 100%, 40%);">+       PAP_AuthenticateReq             ('01'O),</span><br><span style="color: hsl(120, 100%, 40%);">+      PAP_AuthenticateAck             ('02'O),</span><br><span style="color: hsl(120, 100%, 40%);">+      PAP_AuthenticateNak             ('03'O)</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "FIELDLENGTH(8)" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type record PapPacket {</span><br><span style="color: hsl(120, 100%, 40%);">+    PapCode         code,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t         identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+   uint16_t        len,</span><br><span style="color: hsl(120, 100%, 40%);">+  PapPayloadUnion payload</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+     variant (len) "LENGTHTO(code,identifier,len,payload)"</span><br><span style="color: hsl(120, 100%, 40%);">+       variant (payload) "CROSSTAG( req, code = PAP_AuthenticateReq;</span><br><span style="color: hsl(120, 100%, 40%);">+                                 ack, code = PAP_AuthenticateAck;</span><br><span style="color: hsl(120, 100%, 40%);">+                              nak, code = PAP_AuthenticateNak)"</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type union PapPayloadUnion {</span><br><span style="color: hsl(120, 100%, 40%);">+       PapAuthReq      req,</span><br><span style="color: hsl(120, 100%, 40%);">+  PapAuthResp     ack,</span><br><span style="color: hsl(120, 100%, 40%);">+  PapAuthResp     nak</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type record PapAuthReq {</span><br><span style="color: hsl(120, 100%, 40%);">+   uint8_t         peer_id_len,</span><br><span style="color: hsl(120, 100%, 40%);">+  octetstring     peer_id,</span><br><span style="color: hsl(120, 100%, 40%);">+      uint8_t         passwd_len,</span><br><span style="color: hsl(120, 100%, 40%);">+   octetstring     passwd</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+      variant (peer_id_len) "LENGTHTO(peer_id)"</span><br><span style="color: hsl(120, 100%, 40%);">+   variant (passwd_len) "LENGTHTO(passwd)"</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type record PapAuthResp {</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t         msg_len,</span><br><span style="color: hsl(120, 100%, 40%);">+      charstring      msg</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant (msg_len) "LENGTHTO(msg)" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+external function enc_PapPacket(in PapPacket inp) return octetstring</span><br><span style="color: hsl(120, 100%, 40%);">+with { extension "prototype(convert)" extension "encode(RAW)" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+external function dec_PapPacket(in octetstring inp) return PapPacket</span><br><span style="color: hsl(120, 100%, 40%);">+with { extension "prototype(convert)" extension "decode(RAW)" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PapPacket ts_PAP(template (value) PapCode code, template (value) uint8_t identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+                             template (value) PapPayloadUnion payload) := {</span><br><span style="color: hsl(120, 100%, 40%);">+      code := code,</span><br><span style="color: hsl(120, 100%, 40%);">+ identifier := identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+     len := 0, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+   payload := payload</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+template PapPacket tr_PAP(template PapCode code, template uint8_t identifier, template PapPayloadUnion payload) := {</span><br><span style="color: hsl(120, 100%, 40%);">+   code := code,</span><br><span style="color: hsl(120, 100%, 40%);">+ identifier := identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+     len := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+     payload := payload</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PapPacket ts_PAP_AuthReq(uint8_t identifier := 0, octetstring peer_id, octetstring passwd) :=</span><br><span style="color: hsl(120, 100%, 40%);">+       ts_PAP(PAP_AuthenticateReq, identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+               { req := { peer_id_len := 0, peer_id := peer_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                         passwd_len := 0, passwd := passwd } });</span><br><span style="color: hsl(120, 100%, 40%);">+template PapPacket tr_PAP_AuthReq(template uint8_t identifier := ?, octetstring peer_id, octetstring passwd) :=</span><br><span style="color: hsl(120, 100%, 40%);">+   tr_PAP(PAP_AuthenticateReq, identifier,</span><br><span style="color: hsl(120, 100%, 40%);">+               { req := { peer_id_len := ?, peer_id := peer_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                         passwd_len := ?, passwd := passwd } });</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PapPacket ts_PAP_AuthAck(uint8_t identifier := 0, charstring msg) :=</span><br><span style="color: hsl(120, 100%, 40%);">+     ts_PAP(PAP_AuthenticateAck, identifier, { ack := { msg_len := 0, msg := msg } });</span><br><span style="color: hsl(120, 100%, 40%);">+template PapPacket tr_PAP_AuthAck(template uint8_t identifier := ?) :=</span><br><span style="color: hsl(120, 100%, 40%);">+     tr_PAP(PAP_AuthenticateAck, identifier, { ack := ? });</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PapPacket ts_PAP_AuthNak(uint8_t identifier := 0, charstring msg) :=</span><br><span style="color: hsl(120, 100%, 40%);">+ ts_PAP(PAP_AuthenticateNak, identifier, { nak := { msg_len := 0, msg := msg } });</span><br><span style="color: hsl(120, 100%, 40%);">+template PapPacket tr_PAP_AuthNak(template uint8_t identifier := ?) :=</span><br><span style="color: hsl(120, 100%, 40%);">+     tr_PAP(PAP_AuthenticateNak, identifier, { nak := ? });</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+} with { encode "RAW" ; variant "FIELDORDER(msb)" }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13607">change 13607</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/13607"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I31cb766bb701b8107df5de978d2b0b085977045a </div>
<div style="display:none"> Gerrit-Change-Number: 13607 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>