Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


UDR TypeDescription

requestMessage

  • Access_Request UDR - A login request from a supposed user which must be authenticated against a subscriber database.

responseMessage

  • Access_Accept UDR - Sent back in case the authentication succeeded.

  • Access_Reject UDR - Sent back in case the authentication failed.

The full Ultra Format Definition for the example is not shown, since it is beyond the scope of this manual to handle packet content or UFDL syntax.

Shortened Ultra Format Definition

The format definition is here stored in the Default directory with the name extendedRadius.

Code Block
languagetext
themeEclipse
external Access_Request_Ext sequential :
      identified_by(Code == 1),
      dynamic_size(RecLength) {
         int       Code:           static_size(1);
         int       Identifier:     static_size(1);
         int       RecLength:      static_size(2),
                                   encode_value(udr_size);
         bytearray Authenticator:  static_size(16);
         switched_set( Type ) {
             int Type:           static_size(1);
             int Length:         static_size(1),
                                   encode_value(case_size);
             case(1) {
               ascii User_Name: dynamic_size( Length - 2 );
             };
             case(2) {
               ascii User_Password: dynamic_size( Length - 2 ),
                                   terminated_by(0);
             };
         // ...
         // Further field definitions.
         // ...
         };
};

external Access_Accept_Ext sequential :
      identified_by(Code == 2),
      dynamic_size(RecLength) {
         // ...
         // Further field definitions.
         // ...
};

external Access_Reject_Ext sequential :
      identified_by(Code == 3),
      dynamic_size(RecLength) {
         // ...
         // Further field definitions.
         // ...
};

internal Vendor_Specific_Int {
      int     Type;
      int     Length;
      int     VendorID;
      int     SubAttrID;
      int     VendorLength;
      int     InfoCode;
      string  Data;
};

in_map Access_Request_Map : external(Access_Request_Ext),
                            target_internal(Access_Request_Int) {
      automatic {
          Vendor_Specific_Ext: internal( Vendor_Specific_Int ),
                        target_internal( Vendor_Specific_TI1 );
      };
};

in_map Access_Accept_InMap: external(Access_Accept_Ext),
           target_internal( Access_Accept_Int ) {
      automatic {
          Vendor_Specific_Ext: internal( Vendor_Specific_Int );
      };
};

out_map Access_Accept_Map : external(Access_Accept_Ext), 
                            internal(Access_Accept_Int) {
      automatic;
};

in_map Access_Reject_InMap: external(Access_Reject_Ext),
           target_internal( Access_Reject_Int ) {
      automatic {
          Vendor_Specific_Ext: internal( Vendor_Specific_Int );
      };
};

out_map Access_Reject_Map : external(Access_Reject_Ext), 
                            internal(Access_Reject_Int) {
      automatic;
};

decoder Request_Dec: in_map(Access_Request_Map);

encoder Response_Enc: out_map(Access_Accept_Map),
                      out_map(Access_Reject_Map);


Scroll ignore
scroll-viewportfalse
scroll-pdftrue
scroll-officefalse
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmlfalse


Next: