Class DhcpPacket
java.lang.Object
ru.bitel.bgbilling.kernel.network.dhcp.DhcpPacket
- All Implemented Interfaces:
 Comparator<DhcpOption>
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classОпция, которой оперирует биллинг для поиска агентского устройства, сервиса. - 
Field Summary
FieldsModifier and TypeFieldDescriptionbyte[]Client HW address.byte[]Client IP.static final intCode for DHCPACK Messagestatic final intCode for DHCPDECLINE Messagestatic final intCode for DHCPDISCOVER Messagestatic final intCode for DHCPINFORM Messagestatic final intCode for DHCPNAK Messagestatic final intCode for DHCPOFFER Messagestatic final intCode for DHCPRELEASE Messagestatic final intCode for DHCPREQUEST Messagebyte[]Boot file name.static shortМаска для поля flags, устанавливающего способ отправки dhcp-пакета как broadcast (всем).shortFlags.byte[]Relay agent IP.byteHardware address length.byteHw options.byteHW address Type.byteТип DHCP-пакета.byteOp code.static final byteТип DHCP-сообщения - от клиента к серверуstatic final byteТип DHCP-сообщения - от сервера к клиентуstatic final byteDHCP-опция 82.static final byteDHCP-опция 61.static final byteDHCP-опция 8.static final byteDHCP-опция 57.static final byteDHCP-опция 15.static final byteDHCP-опция 6.static final byteDHCP-опция 12.static final byteDHCP-опция 51.static final byteDHCP-опция 7.static final byteDHCP-опция 9.static String[]static final byteDHCP-опция 5.static final byteDHCP-опция 55.static final byteDHCP-опция 59.static final byteDHCP-опция 58.static final byteDHCP-опция 50.static final byteDHCP-опция 3.static final byteDHCP-опция 54.static final byteDHCP-опция 1.static final byteDHCP-опция 2.static final byteDHCP-опция 4.static final byteOption 60 (Vendor class identifier) https://tools.ietf.org/html/rfc2132#section-9.13shortElapsed time from trying to boot.byte[]Server IP.byte[]Optional server host name.intTransaction id.byte[]Your client IP.static final byteКонстанта для нулевого значения байта - 
Constructor Summary
ConstructorsConstructorDescriptionКонструктор пустого пакета.DhcpPacket(ByteBuffer request) Конструктор пакета - запроса. - 
Method Summary
Modifier and TypeMethodDescriptionvoidОчистка подопций 82й опции.final intcompare(DhcpOption o1, DhcpOption o2) Сравнение опций в зависимости от их "веса"final DhcpPacketСоздание ответного dhcp-пакета на dhcp-запрос на основании данных запроса.final DhcpOptiongetOption(byte code) <O> OgetOption(DhcpPacket.DhcpPacketOption<O> option) Получение опции(атрибута) из пакета.<O> OgetOption(DhcpPacket.DhcpPacketOption<O> option, O value) Получение опции(атрибута) из пакета.final DhcpOptiongetSubOption(byte code) booleanВозвращает наличие Options.82 в запросе.final booleanПроверка на заполненность поляciaddrfinal booleanПроверка, пришел ли dhcp-запрос от dhcp-relay агента, ретранслировавшего dhcp-запрос от абонента.static final booleanisNil(byte[] b) Проверка на незаполненность dhcp-поля, представленного массивом байтов.static booleanisRenewRequest(DhcpPacket request) Првоеряет, является ли данный dhcp-запрос renew-запросом.voidserialize(ByteBuffer bb) Сериализация dhcp-пакета в последовательность байт.final voidsetOption(byte code, byte[] value) Установка значения dhcp-опции.final voidfinal voidsetOption(DhcpOption option) Установка значения опции в dhcp-пакет.<O> voidsetOption(DhcpPacket.DhcpPacketOption<O> option, O value) Установка опции в пакет.final voidsetSubOption(byte code, byte[] value) final voidsetSubOption(byte code, String stringValue) final voidsetSubOption(DhcpOption option) toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Comparator
equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong 
- 
Field Details
- 
ZERO
public static final byte ZEROКонстанта для нулевого значения байта- See Also:
 
 - 
FLAG_BROADCAST
public static short FLAG_BROADCASTМаска для поля flags, устанавливающего способ отправки dhcp-пакета как broadcast (всем). В противовес unicast - одному. - 
OP_BOOT_REQUEST
public static final byte OP_BOOT_REQUESTТип DHCP-сообщения - от клиента к серверу- See Also:
 
 - 
OP_BOOT_RESPONSE
public static final byte OP_BOOT_RESPONSEТип DHCP-сообщения - от сервера к клиенту- See Also:
 
 - 
DHCP_DISCOVER
public static final int DHCP_DISCOVERCode for DHCPDISCOVER Message- See Also:
 
 - 
DHCP_OFFER
public static final int DHCP_OFFERCode for DHCPOFFER Message- See Also:
 
 - 
DHCP_REQUEST
public static final int DHCP_REQUESTCode for DHCPREQUEST Message- See Also:
 
 - 
DHCP_DECLINE
public static final int DHCP_DECLINECode for DHCPDECLINE Message- See Also:
 
 - 
DHCP_ACK
public static final int DHCP_ACKCode for DHCPACK Message- See Also:
 
 - 
DHCP_NAK
public static final int DHCP_NAKCode for DHCPNAK Message- See Also:
 
 - 
DHCP_RELEASE
public static final int DHCP_RELEASECode for DHCPRELEASE Message- See Also:
 
 - 
DHCP_INFORM
public static final int DHCP_INFORMCode for DHCPINFORM Message- See Also:
 
 - 
OPTION_SUBNET_MASK
public static final byte OPTION_SUBNET_MASKDHCP-опция 1. Маска подсети, из которой получен адрес. IP-адрес в десятичном формате с точками- See Also:
 
 - 
OPTION_TIME_OFFSET
public static final byte OPTION_TIME_OFFSETDHCP-опция 2. Задает разницу во времени (в секундах) в подсети клиента по сравнению с Универсальным скоординированным временем (UTC). 32-разрядное целое число- See Also:
 
 - 
OPTION_ROUTER
public static final byte OPTION_ROUTERDHCP-опция 3. Список IP-адресов шлюзов по умолчанию. Один или несколько IP-адресов в десятичном формате с точками- See Also:
 
 - 
OPTION_TIME_SERVER
public static final byte OPTION_TIME_SERVERDHCP-опция 4. Список IP-адресов серверов времени. Один или несколько IP-адресов в десятичном формате с точками- See Also:
 
 - 
OPTION_NAME_SERVER
public static final byte OPTION_NAME_SERVERDHCP-опция 5. Список IP-адресов серверов имен. Один или несколько IP-адресов в десятичном формате с точками- See Also:
 
 - 
OPTION_DOMAIN_NAME_SERVER
public static final byte OPTION_DOMAIN_NAME_SERVERDHCP-опция 6. Список IP-адресов серверов DNS. Один или несколько IP-адресов в десятичном формате с точками- See Also:
 
 - 
OPTION_LOG_SERVER
public static final byte OPTION_LOG_SERVERDHCP-опция 7. Список IP-адресов серверов протоколов. Один или несколько IP-адресов в десятичном формате с точками- See Also:
 
 - 
OPTION_COOKIE_SERVER
public static final byte OPTION_COOKIE_SERVERDHCP-опция 8. Список IP-адресов серверов cookie. Один или несколько IP-адресов в десятичном формате с точками- See Also:
 
 - 
OPTION_LPR_SERVER
public static final byte OPTION_LPR_SERVERDHCP-опция 9. Список IP-адресов серверов LPR. Один или несколько IP-адресов в десятичном формате с точками- See Also:
 
 - 
OPTION_HOST_NAME
public static final byte OPTION_HOST_NAMEDHCP-опция 12. Имя хоста клиента. Строка ASCII- See Also:
 
 - 
OPTION_DOMAIN_NAME
public static final byte OPTION_DOMAIN_NAMEDHCP-опция 15. Имя домена DNS по умолчанию. Строка ASCII- See Also:
 
 - 
OPTION_REQUESTED_IP_ADDRESS
public static final byte OPTION_REQUESTED_IP_ADDRESSDHCP-опция 50. IP-адрес, запрашиваемый клиентом- See Also:
 
 - 
OPTION_IP_ADDRESS_LEASE_TIME
public static final byte OPTION_IP_ADDRESS_LEASE_TIMEDHCP-опция 51. Время выделения для возвращаемого адреса. По умолчанию сервер DHCP использует ключевое слово leasetimedefault, однако непосредственное задание опции 51 переопределяет его. 32-разрядное целое число без знака- See Also:
 
 - 
OPTION_SERVER_IDENTIFIER
public static final byte OPTION_SERVER_IDENTIFIERDHCP-опция 54. Используются сервером DHCP или клиентом для указания адреса сервера или сервера, на который направляется сообщение.- See Also:
 
 - 
OPTION_DHCP_MAX_MSG_SIZE
public static final byte OPTION_DHCP_MAX_MSG_SIZEDHCP-опция 57. DHCP Maximum Message Size (длина 2)- See Also:
 
 - 
OPTION_RENEWAL_TIME_VALUE
public static final byte OPTION_RENEWAL_TIME_VALUEDHCP-опция 58. Интервал времени (в секундах), в течение которого клиент должен отправить запрос на обновление. 32-разрядное целое число без знака- See Also:
 
 - 
OPTION_REBINDING_TIME_VALUE
public static final byte OPTION_REBINDING_TIME_VALUEDHCP-опция 59. Интервал времени (в секундах), в течение которого клиент должен отправить запрос на повторное связывание. 32-разрядное целое число без знака- See Also:
 
 - 
OPTION_PARAMETER_REQUEST_LIST
public static final byte OPTION_PARAMETER_REQUEST_LISTDHCP-опция 55. Используется клиентом DHCP для указания требуемых параметров, которые бы он хотел получить от сервера. Сервер может не поддерживать все требуемые клиентом поля и будет возвращать только те, которые ему доступны. В опции фигурирует N байтов, каждый из которых является ссылкой на соответствующую DHCP-опцию. При формировании DHCP-ответа значение опции OPTION_PARAMETER_REQUEST_LIST из DHCP-запроса используется для упорядочивания опций при сериализации.- See Also:
 
 - 
OPTION_VENDOR_CLASS_IDENTIDIER
public static final byte OPTION_VENDOR_CLASS_IDENTIDIEROption 60 (Vendor class identifier) https://tools.ietf.org/html/rfc2132#section-9.13- See Also:
 
 - 
OPTION_CLIENT_IDENTIDIER
public static final byte OPTION_CLIENT_IDENTIDIERDHCP-опция 61. Используется для однозначной идентификации клиента DHCP- See Also:
 
 - 
OPTION_AGENT_INFORMATION
public static final byte OPTION_AGENT_INFORMATIONDHCP-опция 82. Используется для того чтобы проинформировать DHCP-сервер о том, от какого DHCP-ретранслятора (DHCP-relay) и через какой его порт был получен запрос- See Also:
 
 - 
OPTION_NAME
 - 
op
public byte opOp code. Тип сообщения. Может принимать значения: BOOTREQUEST (0x01, запрос от клиента к серверу) и BOOTREPLY (0x02, ответ от сервера к клиенту). Размер поля - 1 байт. - 
htype
public byte htypeHW address Type. Тип аппаратного адреса. Допустимые значения этого поля определены в RFC 1700 «Assigned Numbers». Например, для MAC-адреса Ethernet это поле принимает значение 0x01. Размер поля - 1 байт. - 
hlen
public byte hlenHardware address length. Длина аппаратного адреса в байтах. Для MAC-адреса Ethernet — 0x06. Размер поля - 1 байт - 
hops
public byte hopsHw options. Количество промежуточных маршрутизаторов (так называемых агентов ретрансляции DHCP), через которые прошло сообщение. Клиент устанавливает это поле в 0x00. Размер поля - 1 байт - 
xid
public int xidTransaction id. Уникальный идентификатор транзакции, генерируемый клиентом в начале процесса получения адреса. Размер поля - 4 байта - 
secs
public short secsElapsed time from trying to boot. Время в секундах с момента начала процесса получения адреса. Может не использоваться (в этом случае оно устанавливается в 0x0000). Размер поля - 2 байта - 
flags
public short flagsFlags. Поле для флагов — специальных параметров протокола DHCP. Размер поля - 2 байта. - 
ciaddr
public byte[] ciaddrClient IP. IP-адрес клиента. Заполняется только в том случае, если клиент уже имеет собственный IP-адрес и способен отвечать на запросы ARP (это возможно, если клиент выполняет процедуру обновления адреса по истечении срока аренды). Размер поля - 4 байта. - 
yiaddr
public byte[] yiaddrYour client IP. Новый IP-адрес клиента, предложенный сервером. Размер поля - 4 байта. - 
siaddr
public byte[] siaddrServer IP. IP-адрес сервера. Возвращается в предложении DHCP (DHCP-OFFER). Размер поля - 4 байта - 
giaddr
public byte[] giaddrRelay agent IP. IP-адрес агента ретрансляции, если таковой участвовал в процессе доставки сообщения DHCP до сервера. Размер поля - 4 байта. - 
chaddr
public byte[] chaddrClient HW address. Аппаратный адрес (обычно MAC-адрес) клиента. Размер поля - 16 байт. - 
sname
public byte[] snameOptional server host name. Необязательное имя сервера в виде нуль-терминированной строки. Размер поля - 64 байта - 
file
public byte[] fileBoot file name. Необязательное имя файла на сервере, используемое бездисковыми рабочими станциями при удалённой загрузке. Как иsname, представлено в виде нуль-терминированной строки. Размер поля - 128 байт. - 
messageType
public byte messageTypeТип DHCP-пакета. Размер поля - 1 байт. Возможные значения:
 
 - 
 - 
Constructor Details
- 
DhcpPacket
public DhcpPacket()Конструктор пустого пакета. - 
DhcpPacket
Конструктор пакета - запроса.- Parameters:
 request- содержимое запроса в виде набора байтов
 
 - 
 - 
Method Details
- 
createResponse
Создание ответного dhcp-пакета на dhcp-запрос на основании данных запроса.- Returns:
 - dhcp-ответ с установленным полем op=
OP_BOOT_RESPONSE 
 - 
haveSubOptions
public boolean haveSubOptions()Возвращает наличие Options.82 в запросе.- Returns:
 - true - в dhcp-запросе присутствует 82я опция.
 
 - 
clearSubOptions
public void clearSubOptions()Очистка подопций 82й опции. - 
serialize
Сериализация dhcp-пакета в последовательность байт.- Parameters:
 bb- набор байтов, куда сериализуется пакет
 - 
isFromRelayAgent
public final boolean isFromRelayAgent()Проверка, пришел ли dhcp-запрос от dhcp-relay агента, ретранслировавшего dhcp-запрос от абонента. Анализируется заполненность поляgiaddr- Returns:
 - true - запрос пришел от dhcp-relay, false - не от dhcp-relay.
 
 - 
isClientAddressSet
public final boolean isClientAddressSet()Проверка на заполненность поляciaddr- Returns:
 
 - 
compare
Сравнение опций в зависимости от их "веса"- Specified by:
 comparein interfaceComparator<DhcpOption>- Parameters:
 o1-o2-- Returns:
 
 - 
setOption
Установка значения опции в dhcp-пакет.- Parameters:
 option- устанавливаемая опция
 - 
setOption
public final void setOption(byte code, byte[] value) Установка значения dhcp-опции. Опция задается кодом- Parameters:
 code-value-
 - 
setOption
 - 
getOption
 - 
setSubOption
 - 
setSubOption
public final void setSubOption(byte code, byte[] value)  - 
setSubOption
 - 
getSubOption
 - 
toString
 - 
getOption
Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет null.- Parameters:
 option- идентификатор опции, которая была установлена в обработчике протокола- Returns:
 - значение опции.
 
 - 
getOption
Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет value.- Parameters:
 option- идентификатор опции, значение которой нужно получить.value- - значение по умолчанию- Returns:
 - значение опции
 
 - 
setOption
Установка опции в пакет.- Parameters:
 option- идентификатор устанавливаемой опцииvalue- устанавливаемое значение.
 - 
isNil
public static final boolean isNil(byte[] b) Проверка на незаполненность dhcp-поля, представленного массивом байтов. Если хотя бы один байт массива не нулевой, то это значит, что поле имеет значение.- Parameters:
 b- поле в виде массива байтов- Returns:
 - true - поле не имеет значение и заполнено нулями, false - в поле записано какое-то ненулевое значение.
 
 - 
isRenewRequest
Првоеряет, является ли данный dhcp-запрос renew-запросом. Запрос является RENEW, если пакет REQUEST, ciaddr!=0.0.0.0, а опции Server-Identifier и Requested-IP-Address отсутствуют.- Parameters:
 request- проверяемый dhcp-запрос- Returns:
 - true - запрос является renew-запросом, false - не renew-запрос.
 
 
 -