LINUX.ORG.RU

Сообщения Voffko

 

TCP checksum calculate, как?

Форум — Development

struct tcphdr *tcph = (struct tcphdr *)(skb_network_header((skb)) + ip_hdrlen((skb)));
struct iphdr *iph = (struct iphdr *)skb_network_header(skb);    
printk(KERN_ALERT "INFO: CHECKSUM TCP old: %u.\n",tcph->check);
datalen = skb->len - (iph->ihl << 2);
tcph->check = 0;printk(KERN_ALERT "INFO: CHECKSUM TCP=0: %u.\n",tcph->check);
tcph->check = csum_tcpudp_magic(iph->saddr, iph->daddr, datalen, IPPROTO_TCP, csum_partial((unsigned char *)tcph,datalen,0));
printk(KERN_ALERT "INFO: CHECKSUM TCP new: %u.\n",tcph->check);

Есть пример, но на выдаче неверная сумма. Не могу понять, как правильно считать чексумму.
Суть данного кода в том, что он просто считает заново хэш исходящего пакета.

skb->ip_summed = CHECKSUM_UNNECESSARY; - добавил после расчета суммы, сумма отличная от старой, но пакеты идут..
Правильно ли я понимаю, что skb->ip_summed = CHECKSUM_UNNECESSARY; - позволяет не обращать внимания на чексумму?

 , ,

Voffko
()

Как программно добавить правило в таблицу маршрутизации?

Форум — Web-development

День добрый! Имеется балансировщик сети через который подключены клиенты и сервера, балансировщик заранее знает какой сервер менее загружен. Какими методами можно разработать программу, чтобы перенаправить любой клиентский трафик на, допустим, другой ip адрес?

 ,

Voffko
()

RSS подписка на новые темы