LINUX.ORG.RU

skb->data проблема


0

0

Пытаюсь получить данные из буфера, пишу skb->len он возвращает нормальную длину 501 бит пишу data = skb->data, потом печатаю data он выводит E и длину строки равную 1. Могут ли быть данные защищены от чтения? Пакет передается SIP устройством - текстовый.


кусок кода в студию! (телепаты, сами понимаете, отдыхают после праздников)

anonymous
()
Ответ на: комментарий от anonymous

static struct ip_vs_dest *
ip_vs_sip_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
{
	struct list_head *p;
	struct ip_vs_dest *dest;
	
	unsigned int len, data_len, x, i;
	unsigned char *data;

      data = skb->data;
	len = skb->len;
	
	IP_VS_INFO("Length: %d  Packet:\n%s\n", len, data);

	
	return 0;
}


Пробовал и data = (unsigned char *)skb->nh.raw, и использовать функцию strncpy(pkt, skb->data, skb->len). Все равно len правильный, а пакет пустой. P.S. Если это важно data_len = 0

repa40
() автор топика
Ответ на: комментарий от repa40

А как создаётся и передается в функцию экземпляр структуры sk_buff?

jek_
()
Ответ на: комментарий от repa40

>        data = skb->data;
>        len = skb->len;

а что там, в skb? (я не знаю, что такое SIP).
например, для udp пакета, в skb->data udphdr,
а данные, соответственно, дальше (это нужно
и для ->len учитывать).

idle ★★★★★
()
Ответ на: комментарий от idle

Это протокол IP телефонии данные передаются в udp пакетах в виде текста (как хттп). Заполнение буфера писал не я, сейчас роюсь в исходниках linux virtual server найду скажу как заполняется. А вобще это будет шедулер для lvs для сипа. А как тогда выдернуть данные

skb->data + 32 а длину skb->len - 32? Заголовки udp 32 бита насколько я помню?

repa40
() автор топика
Ответ на: комментарий от repa40

попробуйте вывести дамп всей skb целиком(от skb->head до skb->tail). Просто по мере подъема skb по стеку skb->data как правило указывает на актуальную для данного уровня информацию (как уже упомянул idle)

PS в UDP заголовке 64 бита :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.