Opened 8 years ago

Closed 8 years ago

#192 closed баг (fixed)

Ошибка 0x0b04 на IP_ADDRESS_v6

Reported by: alx Owned by: alx
Priority: средний Milestone: 1 очередь
Component: VE-01 Keywords:
Cc:

Description

При старте платы, а также при смене адреса IPv6 вызывается comcerto_set_ip6(), которая передает в MSP FC_IP_ADDRESS_V6 с новым адресом.

Замечено, что если существует канал, которому хоть раз устанавливали IPv6 с помощью set_eth_hdr_chan(), то последующий comcerto_set_ip6() дает ошибку 0x0b04 (CNF_ERROR_IP_ADDRESS_IPCLIENT_REG). После этого в работе MSP начинаются глюки вплоть до перезагрузки платы по WDT.

Удалось воспроизвести следующим образом:

  1. Запускаем плату. При этом comcerto_set_ip6() устанавливает текущий адрес платы.
  2. Делаем вызов с разговором по IPv6 любым канальным окончанием, у которого канал всегда создан (R2, 1IND и т.п.).
  3. Меняем адрес IPv6 и при вызове comcerto_set_ip6() получаем ошибку.

В качестве решения предлагается:

  1. В stopRTP() отменять использование IPv6 с помощью SET_ETH_HDR_CHAN.
  2. comcerto_set_ip6() вызывать не в sip_ua.cpp, а в обработчике события "IP address changed" менеджером виртуальных каналов на первом проходе после обработки первого прохода всеми канальными окончаниями.
  3. Канальные окончания при получении "IP address changed" на первом проходе отключают использование IPv6 с помощью SET_ETH_HDR_CHAN (если они в данный момент используют IPv6).
  4. В зависимости от типа канала, на втором проходе канальное окончание может предпринять какие-то действия для восстановления RTP потока с использованием нового адреса (например послать REINVITE).

Change History (1)

comment:1 by alx, 8 years ago

Resolution: fixed
Status: newclosed

In 1084/sip_ua:

Устранена ошибка, приводившая к отсутствию слышимости и даже перезагрузкам платы
после смены адреса IPv6. При старте в MSP больше не передается команда IP_ADDRESS_V6,
так как она переводит MSP в режим одного общего адреса, который затем нельзя изменить.
Вместо этого при старте передается IP_OPTIONS с установленным битом 4 параметра 1,
который включает режим неограниченного количества адресов.
Кроме этого, перед отправкой в MSP SET_ETH_HDR_CHAN вызывается del_eth_hdr_chan(),
разрегистрирующая все ранее зарегистрированные для канала протоколы.
Closes #192.

Note: See TracTickets for help on using tickets.