ru.bitel.bgbilling.kernel.network.radius

## Class RadiusPacket

- java.lang.Object
- - ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet
  - - ru.bitel.bgbilling.kernel.network.radius.RadiusPacket

- All Implemented Interfaces:
    java.lang.Cloneable

      public class RadiusPacket
      extends RadiusAttributeSet

  Радиус пакет. Этот класс расширяет набор атрибутов `RadiusAttributeSet`.
  See Also:
    `RadiusAttributeSet}, {@link RadiusDictionary}`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `RadiusPacket.RadiusPacketOption<T>` Класс, объекты которого используются для установки `setOption(RadiusPacketOption, Object)` и для получения `getOption(RadiusPacketOption)`.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static byte` | `ACCESS_ACCEPT`
    `static byte` | `ACCESS_CHALLENGE`
    `static byte` | `ACCESS_REJECT`
    `static byte` | `ACCESS_REQUEST`
    `static byte` | `ACCOUNTING_MESSAGE`
    `static byte` | `ACCOUNTING_REQUEST`
    `static byte` | `ACCOUNTING_RESPONSE`
    `static byte` | `ACCOUNTING_STATUS`
    `static byte` | `ACCOUNTING_STATUS_START`
    `static byte` | `ACCOUNTING_STATUS_STOP`
    `static byte` | `ACCOUNTING_STATUS_UPDATE`
    `protected byte[]` | `authenticator` Для пришедшего запроса это authenticator который хранится в запросе, для создаваемого запроса - null.
    `static byte` | `CoA_ACK`
    `static byte` | `CoA_NAK`
    `static byte` | `CoA_REQUEST`
    `static byte` | `DISCONNECT_ACK`
    `static byte` | `DISCONNECT_NAK`
    `static byte` | `DISCONNECT_REQUEST`
    `byte` | `identifier` Идентификатор пакета.
    `protected byte[]` | `messageAuthenticator` Атрибут для подписи пакета `RadiusDictionary.Message_Authenticator`.
    `static byte` | `PASSWORD_ACCEPT`
    `static byte` | `PASSWORD_REJECT`
    `static byte` | `PASSWORD_REQUEST`
    `protected byte[]` | `requestAuthenticator` Для создаваемого ответа - это authenticator запроса.
    `static byte` | `STATUS_CLIENT`
    `static byte` | `STATUS_SERVER`

    - ### Fields inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet

      `standartAttributes, vendorAttributes`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `RadiusPacket(byte code, byte identifier)` Создание радиус пакета (запрос).
    `protected` | `RadiusPacket(byte code, byte identifier, byte[] requestAuthenticator, byte[] authenticator, byte[] messageAuthenticator, java.util.Map<java.lang.Integer,java.util.List<RadiusAttribute<?>>> standartAttributes, java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.util.List<RadiusAttribute<?>>>> vendorAttributes, java.util.Map<java.lang.String,java.lang.Object> optionMap)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addAttribute(bitel.billing.server.radius.RadiusAttribute ra)` Deprecated. use `addAttribute(RadiusAttribute)`
    `void` | `addAttributes(java.util.List<bitel.billing.server.radius.RadiusAttribute> attrs)` Deprecated. use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`
    `void` | `addOptions(RadiusPacket request)`
    `void` | `addVendorAttribute(bitel.billing.server.radius.RadiusVendorAttribute rva)` Deprecated. use `addAttribute(RadiusAttribute)`
    `void` | `addVendorAttributes(java.util.List<bitel.billing.server.radius.RadiusVendorAttribute> attrs)` Deprecated. use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`
    `RadiusPacket` | `clone()`
    `RadiusPacket` | `createResponse()` Создание пакета-ответа из пакета-запроса.
    `void` | `fromPacket(RadiusPacket lastResponsePacket)`
    `byte[]` | `getAuthenticator()`
    `byte[]` | `getAuthenticatorBytes()` Deprecated.
    `byte[]` | `getByteAttribute(int code)` Deprecated. use `RadiusAttributeSet.getByteAttribute(int, int, byte[])`
    `byte` | `getCode()` Получение типа пакета (например, `ACCESS_REQUEST` `ACCOUNTING_REQUEST`).
    `int` | `getFlag()` Deprecated.
    `int` | `getIntAttribute(int code)` Deprecated. use `#getIntAttribute(int, int, int)`
    `<O> O` | `getOption(RadiusPacket.RadiusPacketOption<O> option)` Получение опции(атрибута) из пакета.
    `<O> O` | `getOption(RadiusPacket.RadiusPacketOption<O> option, O value)` Получение опции(атрибута) из пакета.
    `java.lang.Object` | `getOption(java.lang.String option)` Deprecated.
    `byte` | `getPacketId()` Deprecated.
    `int` | `getPacketType()` Deprecated. use `getCode()`
    `java.lang.String` | `getPacketTypeString()` Получение названия типа radius-пакета
    `java.lang.String` | `getStringAttribute(int code)` Deprecated. use `RadiusAttributeSet.getStringAttribute(int, int, String)`
    `Trace` | `getTrace()`
    `java.util.List<RadiusAttribute<?>>` | `getVendorAttributes(int vendor)` Deprecated.
    `java.util.List<RadiusAttribute<?>>` | `getVendorAttributes(int vendor, int code)` Deprecated. use `RadiusAttributeSet.getAttributes(int, int)`
    `int` | `getVendorIntAttribute(int code)` Deprecated. use `#getIntAttribute(int, int, int)`
    `java.lang.String` | `getVendorStringAttribute(int code)` Deprecated. use `RadiusAttributeSet.getStringAttribute(int, int, String)`
    `boolean` | `isRequest()`
    `static RadiusPacket` | `parse(java.nio.ByteBuffer bb)` Парсинг пакета из ByteBuffer.
    `static RadiusPacket` | `parse(java.nio.ByteBuffer bb, boolean move)` Парсинг пакета из ByteBuffer.
    `void` | `setByteAttribute(int code, byte[] value)` Deprecated. use `RadiusAttributeSet.setByteAttribute(int, int, byte[])`
    `void` | `setCode(byte code)` Установка типа пакета.
    `void` | `setFlag(int flag)` Deprecated.
    `void` | `setIntAttribute(int code, int value)` Deprecated. use `RadiusAttributeSet.setIntAttribute(int, int, int)`
    `<O> void` | `setOption(RadiusPacket.RadiusPacketOption<O> option, O value)` Установка опции в пакет.
    `void` | `setOption(java.lang.String option, java.lang.Object value)` Deprecated.
    `void` | `setPacketType(byte value)` Deprecated. use `setCode(byte)`
    `void` | `setStringAttribute(int code, java.lang.String value)` Deprecated. use `RadiusAttributeSet.setStringAttribute(int, int, String)`
    `void` | `setVendorAttribute(bitel.billing.server.radius.RadiusVendorAttribute rva)` Deprecated. use `RadiusAttributeSet.setAttribute(RadiusAttribute)`
    `java.lang.String` | `toString()`
    `void` | `write(java.nio.ByteBuffer bb, byte[] key)` Сериализация пакета в ByteBuffer.

    - ### Methods inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet

      `addAttribute, addAttributes, contains, equals, getAttribute, getAttributes, getAttributeValue, getAttributeValue, getByteAttribute, getIntAttribute, getRadiusAttributeSet, getRadiusAttributeSet, getStringAttribute, getStringAttribute, isEmpty, newRadiusAttributeRealmMap, newRadiusAttributeSet, newRadiusAttributeSet, newRadiusAttributeSetMap, newRadiusAttributeSetRealmMap, removeAttributes, setAttribute, setAttributes, setAttributes, setByteAttribute, setIntAttribute, setStringAttribute, toString`

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ACCESS_REQUEST

          public static final byte ACCESS_REQUEST

      See Also:
        Constant Field Values

    - #### ACCESS_ACCEPT

          public static final byte ACCESS_ACCEPT

      See Also:
        Constant Field Values

    - #### ACCESS_REJECT

          public static final byte ACCESS_REJECT

      See Also:
        Constant Field Values

    - #### ACCOUNTING_REQUEST

          public static final byte ACCOUNTING_REQUEST

      See Also:
        Constant Field Values

    - #### ACCOUNTING_RESPONSE

          public static final byte ACCOUNTING_RESPONSE

      See Also:
        Constant Field Values

    - #### ACCOUNTING_STATUS

          public static final byte ACCOUNTING_STATUS

      See Also:
        Constant Field Values

    - #### PASSWORD_REQUEST

          public static final byte PASSWORD_REQUEST

      See Also:
        Constant Field Values

    - #### PASSWORD_ACCEPT

          public static final byte PASSWORD_ACCEPT

      See Also:
        Constant Field Values

    - #### PASSWORD_REJECT

          public static final byte PASSWORD_REJECT

      See Also:
        Constant Field Values

    - #### ACCOUNTING_MESSAGE

          public static final byte ACCOUNTING_MESSAGE

      See Also:
        Constant Field Values

    - #### ACCESS_CHALLENGE

          public static final byte ACCESS_CHALLENGE

      See Also:
        Constant Field Values

    - #### STATUS_SERVER

          public static final byte STATUS_SERVER

      See Also:
        Constant Field Values

    - #### STATUS_CLIENT

          public static final byte STATUS_CLIENT

      See Also:
        Constant Field Values

    - #### DISCONNECT_REQUEST

          public static final byte DISCONNECT_REQUEST

      See Also:
        Constant Field Values

    - #### DISCONNECT_ACK

          public static final byte DISCONNECT_ACK

      See Also:
        Constant Field Values

    - #### DISCONNECT_NAK

          public static final byte DISCONNECT_NAK

      See Also:
        Constant Field Values

    - #### CoA_REQUEST

          public static final byte CoA_REQUEST

      See Also:
        Constant Field Values

    - #### CoA_ACK

          public static final byte CoA_ACK

      See Also:
        Constant Field Values

    - #### CoA_NAK

          public static final byte CoA_NAK

      See Also:
        Constant Field Values

    - #### ACCOUNTING_STATUS_START

          public static final byte ACCOUNTING_STATUS_START

      See Also:
        Constant Field Values

    - #### ACCOUNTING_STATUS_STOP

          public static final byte ACCOUNTING_STATUS_STOP

      See Also:
        Constant Field Values

    - #### ACCOUNTING_STATUS_UPDATE

          public static final byte ACCOUNTING_STATUS_UPDATE

      See Also:
        Constant Field Values

    - #### identifier

          public final byte identifier

      Идентификатор пакета.

    - #### requestAuthenticator

          protected final byte[] requestAuthenticator

      Для создаваемого ответа - это authenticator запроса.

    - #### authenticator

          protected byte[] authenticator

      Для пришедшего запроса это authenticator который хранится в запросе,
      для создаваемого запроса - null.

    - #### messageAuthenticator

          protected final byte[] messageAuthenticator

      Атрибут для подписи пакета `RadiusDictionary.Message_Authenticator`.
      Используется в EAP.

  - ### Constructor Detail

    - #### RadiusPacket

          protected RadiusPacket(byte code,
                                 byte identifier,
                                 byte[] requestAuthenticator,
                                 byte[] authenticator,
                                 byte[] messageAuthenticator,
                                 java.util.Map<java.lang.Integer,java.util.List<RadiusAttribute<?>>> standartAttributes,
                                 java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.util.List<RadiusAttribute<?>>>> vendorAttributes,
                                 java.util.Map<java.lang.String,java.lang.Object> optionMap)

    - #### RadiusPacket

          public RadiusPacket(byte code,
                              byte identifier)

      Создание радиус пакета (запрос).
      Parameters:
        `code` - - тип пакета (например, )
        `identifier` - - идентификатор пакета.

  - ### Method Detail

    - #### getCode

          public byte getCode()

      Получение типа пакета (например, `ACCESS_REQUEST` `ACCOUNTING_REQUEST`).
      Returns:

    - #### setCode

          public void setCode(byte code)

      Установка типа пакета.
      Parameters:
        `code` -

    - #### isRequest

          public boolean isRequest()

    - #### write

          public void write(java.nio.ByteBuffer bb,
                            byte[] key)
                     throws java.security.InvalidKeyException,
                            java.security.NoSuchAlgorithmException

      Сериализация пакета в ByteBuffer.
      Parameters:
        `bb` - - буфер
        `key` - - секрет наса.
      Throws:
        `java.security.InvalidKeyException`
        `java.security.NoSuchAlgorithmException`

    - #### parse

          public static RadiusPacket parse(java.nio.ByteBuffer bb)
                                    throws ru.bitel.bgbilling.common.BGException

      Парсинг пакета из ByteBuffer.
      Parameters:
        `bb` -
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### parse

          public static RadiusPacket parse(java.nio.ByteBuffer bb,
                                           boolean move)
                                    throws ru.bitel.bgbilling.common.BGException

      Парсинг пакета из ByteBuffer.
      Parameters:
        `bb` -
      Returns:
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### createResponse

          public RadiusPacket createResponse()

      Создание пакета-ответа из пакета-запроса.
      Returns:

    - #### getOption

          public <O> O getOption(RadiusPacket.RadiusPacketOption<O> option)

      Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет null.
      Type Parameters:
        `O` -
      Parameters:
        `option` -
      Returns:
      See Also:
        `#setOption(RadiusPacketOption, Object)}, {@link VoiceIpNas#CALL_TYPE}, {@link VoiceIpNas#OPERATOR}, {@link RadiusPacketOption}`

    - #### getOption

          public <O> O getOption(RadiusPacket.RadiusPacketOption<O> option,
                                 O value)

      Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет value.
      Type Parameters:
        `O` -
      Parameters:
        `option` -
        `value` - - значение по умолчанию
      Returns:
      See Also:
        `#setOption(RadiusPacketOption, Object)}, {@link VoiceIpNas#CALL_TYPE}, {@link VoiceIpNas#OPERATOR}, {@link RadiusPacketOption}`

    - #### setOption

          public <O> void setOption(RadiusPacket.RadiusPacketOption<O> option,
                                    O value)

      Установка опции в пакет.
      Type Parameters:
        `O` -
      Parameters:
        `option` -
        `value` -
      See Also:
        `VoiceIpNas#CALL_TYPE}, {@link VoiceIpNas#OPERATOR}, {@link RadiusPacketOption}`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `RadiusAttributeSet`

    - #### getPacketTypeString

          public java.lang.String getPacketTypeString()

      Получение названия типа radius-пакета
      Returns:
        тип пакета

    - #### fromPacket

          public void fromPacket(RadiusPacket lastResponsePacket)

    - #### getTrace

          public Trace getTrace()

    - #### getOption

          @Deprecated
          public java.lang.Object getOption(java.lang.String option)

      Deprecated.
      Для обратной совместимости со скриптами
      Parameters:
        `option` -
      Returns:

    - #### setOption

          @Deprecated
          public void setOption(java.lang.String option,
                                            java.lang.Object value)

      Deprecated.
      Для обратной совместимости со скриптами
      Parameters:
        `option` -
        `value` -

    - #### setFlag

          @Deprecated
          public void setFlag(int flag)

      Deprecated.
      Для обратной совместимости со скриптами
      Parameters:
        `flag` -

    - #### getFlag

          @Deprecated
          public int getFlag()

      Deprecated.
      Для обратной совместимости со скриптами
      Returns:

    - #### setPacketType

          @Deprecated
          public void setPacketType(byte value)

      Deprecated. use `setCode(byte)`
      Parameters:
        `value` -

    - #### addAttribute

          @Deprecated
          public void addAttribute(bitel.billing.server.radius.RadiusAttribute ra)

      Deprecated. use `addAttribute(RadiusAttribute)`

    - #### setVendorAttribute

          @Deprecated
          public void setVendorAttribute(bitel.billing.server.radius.RadiusVendorAttribute rva)

      Deprecated. use `RadiusAttributeSet.setAttribute(RadiusAttribute)`

    - #### addVendorAttribute

          @Deprecated
          public void addVendorAttribute(bitel.billing.server.radius.RadiusVendorAttribute rva)

      Deprecated. use `addAttribute(RadiusAttribute)`

    - #### addVendorAttributes

          @Deprecated
          public void addVendorAttributes(java.util.List<bitel.billing.server.radius.RadiusVendorAttribute> attrs)

      Deprecated. use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`

    - #### addAttributes

          @Deprecated
          public void addAttributes(java.util.List<bitel.billing.server.radius.RadiusAttribute> attrs)

      Deprecated. use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`

    - #### setStringAttribute

          @Deprecated
          public void setStringAttribute(int code,
                                                     java.lang.String value)

      Deprecated. use `RadiusAttributeSet.setStringAttribute(int, int, String)`

    - #### setIntAttribute

          @Deprecated
          public void setIntAttribute(int code,
                                                  int value)

      Deprecated. use `RadiusAttributeSet.setIntAttribute(int, int, int)`

    - #### setByteAttribute

          @Deprecated
          public void setByteAttribute(int code,
                                                   byte[] value)

      Deprecated. use `RadiusAttributeSet.setByteAttribute(int, int, byte[])`

    - #### getByteAttribute

          @Deprecated
          public byte[] getByteAttribute(int code)

      Deprecated. use `RadiusAttributeSet.getByteAttribute(int, int, byte[])`

    - #### getStringAttribute

          @Deprecated
          public java.lang.String getStringAttribute(int code)

      Deprecated. use `RadiusAttributeSet.getStringAttribute(int, int, String)`

    - #### getIntAttribute

          @Deprecated
          public int getIntAttribute(int code)

      Deprecated. use `#getIntAttribute(int, int, int)`

    - #### getVendorStringAttribute

          @Deprecated
          public java.lang.String getVendorStringAttribute(int code)

      Deprecated. use `RadiusAttributeSet.getStringAttribute(int, int, String)`

    - #### getVendorIntAttribute

          @Deprecated
          public int getVendorIntAttribute(int code)

      Deprecated. use `#getIntAttribute(int, int, int)`

    - #### getVendorAttributes

          @Deprecated
          public java.util.List<RadiusAttribute<?>> getVendorAttributes(int vendor,
                                                                                    int code)

      Deprecated. use `RadiusAttributeSet.getAttributes(int, int)`

    - #### getVendorAttributes

          @Deprecated
          public java.util.List<RadiusAttribute<?>> getVendorAttributes(int vendor)

      Deprecated.
      Не понятно для чего мог использоваться данный метод.
      Оставлен для обратной совместимости, возвращает все атрибуты всех типов для указанного вендора.
      Parameters:
        `vendor` -
      Returns:

    - #### getPacketType

          @Deprecated
          public int getPacketType()

      Deprecated. use `getCode()`
      Оставлен для обратной совместимости, возвращает тип пакета (code)
      Returns:

    - #### getPacketId

          @Deprecated
          public byte getPacketId()

      Deprecated.
      Оставлен для обратной совместимости, возвращает идентификатор пакета (identifier)
      Returns:

    - #### clone

          public RadiusPacket clone()

      Overrides:
        `clone` in class `java.lang.Object`

    - #### getAuthenticatorBytes

          @Deprecated
          public byte[] getAuthenticatorBytes()

      Deprecated.

    - #### getAuthenticator

          public byte[] getAuthenticator()

    - #### addOptions

          public void addOptions(RadiusPacket request)