[esnacc-dev] [PATCH v0] cxxlib: Add ROSE definitions

Aaron Conole aconole at bytheb.org
Tue Jun 13 14:50:28 UTC 2017


Hi all,

Aaron Conole <aconole at bytheb.org> writes:

> This commit adds an initial implementation of the Remote Operations Service
> Element (ROSE) to the esnacc compiler.  This is based on work contributed by
> estos GmbH.  This initial implementation does not have compiler support.
> It is merely the library portion for the C++ library.
>
> Note that there is currently an auto-assigned operation ID based on hash.  I
> haven't looked at whether ROSE would support this, or if manually assigned
> operation IDs is required by the standard.  If so, I'll need to rework the
> API slightly, but the idea was to keep the user away from needing that
> information.
>
> This commit does not:
>  - implement the invoke, response, reject, error state machines.
>  - add tests
>
> Signed-off-by: Aaron Conole <aconole at bytheb.org>
> CC: Stephen Eckbauer <ste at estos.de>
> ---

This has been delegated to Sagara in patchwork.  It can be marked as
superceded, thanks.

Looking at the spec, it seems the version that estos uses is not
completely ROSE-alike.  I've made a few modifications;  specifically,
my incremental follows (note the choice on operation code, and the
redone invokeId).  This means that the code currently being used
internally at Estos will need some rework - we'll likely have some
compatibility issues to work out.

---

diff --git a/asn1specs/snaccrose.asn b/asn1specs/snaccrose.asn
index 6bc278f..85a384c 100644
--- a/asn1specs/snaccrose.asn
+++ b/asn1specs/snaccrose.asn
@@ -5,8 +5,8 @@
 -- Portions Copright (C), estos GmbH and estos/stm
 
 SNACC-ROSE { joint-iso-itu-t remote-operations(4)
-             informationObjects(5)
-             version1(0) } DEFINITIONS ::= BEGIN
+             generic-PDUs(6)
+             version1(0) } DEFINITIONS IMPLICIT TAGS ::= BEGIN
 
 -- Default ROSE message sent
 ROSEMessage ::= CHOICE {
@@ -36,18 +36,32 @@ ROSEAuthResult ::= SEQUENCE {
 }
 
 
+-- ROSE Basic types
+
+InvokeId ::= CHOICE {
+  present INTEGER,
+  absent NULL
+}
+
 -- ROSE messages
 
 ROSEInvoke             ::=     SEQUENCE {
-    sessionID      [1]          UTF8String      OPTIONAL,
-    invokeID                    INTEGER,
-    linked-ID      [0] IMPLICIT INTEGER         OPTIONAL,
-    operationName  [2]          UTF8String      OPTIONAL,
-    authentication [3]          ROSEAuthRequest OPTIONAL,
-    operationID                 INTEGER,
+    sessionID      [0]          UTF8String      OPTIONAL,
+    invokeId       InvokeId,
+    linkedId       CHOICE {
+        present    [0]          IMPLICIT INTEGER,
+        absent     [1]          IMPLICIT NULL
+    },
+    authentication [1]          ROSEAuthRequest OPTIONAL,
+    operationID                 CHOICE {
+        local  INTEGER,
+        global OBJECT IDENTIFIER,
+        -- esnacc specific extension
+        name   UTF8String
+    },
     argument                    ANY             OPTIONAL
 }
-                                        
+
 ROSEResult ::= SEQUENCE {
     sessionID [1] UTF8String OPTIONAL,
     invokeID      INTEGER,
@@ -72,7 +86,8 @@ ROSEReject ::= SEQUENCE {
     },
     reject             RejectProblem  OPTIONAL,
 
-    -- the following are an etsos extension to reject for transmitting cause
+    -- the following are an etsos extension to reject for transmitting
+    -- additional cause information
     details            UTF8String     OPTIONAL,
     authentication [4] ROSEAuthResult OPTIONAL
 }



More information about the dev mailing list