pkgsrc-wip/fragrouter/patches/patch-af

211 lines
8.1 KiB
Plaintext

$NetBSD: patch-af,v 1.1.1.1 2005/01/16 17:34:40 ishit Exp $
--- tcp_seg.c.orig 1999-07-27 00:08:51.000000000 +0900
+++ tcp_seg.c
@@ -101,18 +101,18 @@ tcp_seg_null_payload(ELEM *seg)
int newlen = ntohs(iph->ip_len) - (ip_hl + tcp_hl);
u_char *newdata;
- if (!(newdata = malloc(ip_hl + TCP_H + newlen)))
+ if (!(newdata = malloc(ip_hl + LIBNET_TCP_H + newlen)))
return NULL;
/* Whack the payload (including TCP options to elude PAWS). */
- memcpy(newdata, seg->data, ip_hl + TCP_H);
- memset(newdata + ip_hl + TCP_H, 0, newlen);
+ memcpy(newdata, seg->data, ip_hl + LIBNET_TCP_H);
+ memset(newdata + ip_hl + LIBNET_TCP_H, 0, newlen);
/* Correct IP length, TCP header length, TCP checksum, segment length. */
- ((struct ip *)newdata)->ip_len = htons(ip_hl + TCP_H + newlen);
- ((struct tcphdr *)(newdata + ip_hl))->th_off = TCP_H / 4;
- libnet_do_checksum(newdata, IPPROTO_TCP, TCP_H + newlen);
- seg->len = ip_hl + TCP_H + newlen;
+ ((struct ip *)newdata)->ip_len = htons(ip_hl + LIBNET_TCP_H + newlen);
+ ((struct tcphdr *)(newdata + ip_hl))->th_off = LIBNET_TCP_H / 4;
+ libnet_do_checksum(newdata, IPPROTO_TCP, LIBNET_TCP_H + newlen);
+ seg->len = ip_hl + LIBNET_TCP_H + newlen;
free(seg->data);
seg->data = newdata;
@@ -188,23 +188,23 @@ tcp_seg_interleave_syns(ELEM *seg)
int ip_hl = iph->ip_hl * 4;
struct tcphdr *tcph = (struct tcphdr *)(s->data + ip_hl);
- if (!(data = malloc(ip_hl + TCP_H)))
+ if (!(data = malloc(ip_hl + LIBNET_TCP_H)))
return NULL;
/* Copy in IP header. */
memcpy(data, s->data, ip_hl);
/* Correct IP length, trash IP ID, TCP sequence number. */
- ((struct ip *)data)->ip_len = htons(ip_hl + TCP_H);
+ ((struct ip *)data)->ip_len = htons(ip_hl + LIBNET_TCP_H);
((struct ip *)data)->ip_id = htons(iph->ip_id) * 2; /* intentional! */
libnet_build_tcp(ntohs(tcph->th_sport), ntohs(tcph->th_dport),
htonl(tcph->th_seq * 2), 0, TH_SYN, ntohs(tcph->th_win),
ntohs(tcph->th_urp), NULL, 0, data + ip_hl);
- libnet_do_checksum(data, IPPROTO_TCP, TCP_H);
+ libnet_do_checksum(data, IPPROTO_TCP, LIBNET_TCP_H);
/* Add it to our list of TCP packets. */
- new = list_elem(data, ip_hl + TCP_H);
+ new = list_elem(data, ip_hl + LIBNET_TCP_H);
free(data);
if (!(s = list_add(s, new)))
@@ -231,34 +231,34 @@ tcp_seg_prepend_fakeclose(u_char *pkt, i
return NULL;
/* Add our fake FIN packet. */
- if (!(data = malloc(ip_hl + TCP_H)))
+ if (!(data = malloc(ip_hl + LIBNET_TCP_H)))
return NULL;
memcpy(data, pkt, ip_hl);
- ((struct ip *)data)->ip_len = htons(ip_hl + TCP_H);
+ ((struct ip *)data)->ip_len = htons(ip_hl + LIBNET_TCP_H);
((struct ip *)data)->ip_id = htons(iph->ip_id) * 2; /* intentional! */
libnet_build_tcp(ntohs(tcph->th_sport), ntohs(tcph->th_dport),
ntohl(tcph->th_seq) + 1, ntohl(tcph->th_ack),
TH_FIN, 0, ntohs(tcph->th_urp), NULL, 0, data + ip_hl);
- new = list_elem(data, ip_hl + TCP_H);
+ new = list_elem(data, ip_hl + LIBNET_TCP_H);
free(data);
if (!(list = list_add(list, new)))
return NULL;
/* Add our fake RST packet. */
- if (!(data = malloc(ip_hl + TCP_H)))
+ if (!(data = malloc(ip_hl + LIBNET_TCP_H)))
return NULL;
memcpy(data, pkt, ip_hl);
- ((struct ip *)data)->ip_len = htons(ip_hl + TCP_H);
+ ((struct ip *)data)->ip_len = htons(ip_hl + LIBNET_TCP_H);
((struct ip *)data)->ip_id = htons(iph->ip_id) * 2 + 1; /* intentional! */
libnet_build_tcp(ntohs(tcph->th_sport), ntohs(tcph->th_dport),
ntohl(tcph->th_seq) + 2, ntohl(tcph->th_ack),
TH_RST, 0, ntohs(tcph->th_urp), NULL, 0, data + ip_hl);
- new = list_elem(data, ip_hl + TCP_H);
+ new = list_elem(data, ip_hl + LIBNET_TCP_H);
free(data);
if (!(list = list_add(list, new)))
@@ -280,34 +280,34 @@ tcp_seg_prepend_connection(u_char *pkt,
return NULL;
/* Add our decoy SYN packet. */
- if (!(data = malloc(ip_hl + TCP_H)))
+ if (!(data = malloc(ip_hl + LIBNET_TCP_H)))
return NULL;
memcpy(data, pkt, ip_hl);
- ((struct ip *)data)->ip_len = htons(ip_hl + TCP_H);
+ ((struct ip *)data)->ip_len = htons(ip_hl + LIBNET_TCP_H);
((struct ip *)data)->ip_id = htons(iph->ip_id) * 2; /* intentional! */
libnet_build_tcp(ntohs(tcph->th_sport), ntohs(tcph->th_dport),
ntohl(tcph->th_seq) * 2, 0, TH_SYN, ntohs(tcph->th_win),
0, NULL, 0, data + ip_hl);
- libnet_do_checksum(data, IPPROTO_TCP, TCP_H);
- new = list_elem(data, ip_hl + TCP_H);
+ libnet_do_checksum(data, IPPROTO_TCP, LIBNET_TCP_H);
+ new = list_elem(data, ip_hl + LIBNET_TCP_H);
free(data);
if (!(list = list_add(list, new)))
return NULL;
/* Add our decoy RST packet, in case the attacker is filtering hers. */
- if (!(data = malloc(ip_hl + TCP_H)))
+ if (!(data = malloc(ip_hl + LIBNET_TCP_H)))
return NULL;
memcpy(data, pkt, ip_hl);
- ((struct ip *)data)->ip_len = htons(ip_hl + TCP_H);
+ ((struct ip *)data)->ip_len = htons(ip_hl + LIBNET_TCP_H);
((struct ip *)data)->ip_id = htons(iph->ip_id) * 2 + 1; /* intentional! */
libnet_build_tcp(ntohs(tcph->th_sport), ntohs(tcph->th_dport),
ntohl(tcph->th_seq) * 2 + 1, 0, TH_RST, ntohs(tcph->th_win),
0, NULL, 0, data + ip_hl);
- libnet_do_checksum(data, IPPROTO_TCP, TCP_H);
- new = list_elem(data, ip_hl + TCP_H);
+ libnet_do_checksum(data, IPPROTO_TCP, LIBNET_TCP_H);
+ new = list_elem(data, ip_hl + LIBNET_TCP_H);
free(data);
if (!(list = list_add(list, new)))
@@ -335,24 +335,24 @@ tcp_seg_prepend_junk(u_char *pkt, int pk
return NULL;
for (i = 0; i < 500 ; i++) {
- if (!(data = malloc(ip_hl + TCP_H + PACKET)))
+ if (!(data = malloc(ip_hl + LIBNET_TCP_H + LIBNET_PACKET)))
return NULL;
/* Copy over IP header. */
memcpy(data, pkt, ip_hl);
/* Correct IP length, IP ID. */
- ((struct ip *)data)->ip_len = htons(ip_hl + TCP_H + PACKET);
+ ((struct ip *)data)->ip_len = htons(ip_hl + LIBNET_TCP_H + LIBNET_PACKET);
((struct ip *)data)->ip_id = htons(iph->ip_id + i); /* intentional! */
/* Add TCP header, null payload, and fix checksum. */
libnet_build_tcp(ntohs(tcph->th_sport), ntohs(tcph->th_dport),
i, 666, TH_ACK, ntohs(tcph->th_win),
ntohs(tcph->th_urp), NULL, 0, data + ip_hl);
- memset(data + ip_hl + TCP_H, 0, PACKET);
- libnet_do_checksum(data, IPPROTO_TCP, TCP_H);
+ memset(data + ip_hl + LIBNET_TCP_H, 0, LIBNET_PACKET);
+ libnet_do_checksum(data, IPPROTO_TCP, LIBNET_TCP_H);
- new = list_elem(data, ip_hl + TCP_H + PACKET);
+ new = list_elem(data, ip_hl + LIBNET_TCP_H + LIBNET_PACKET);
free(data);
if (!(list = list_add(list, new)))
@@ -370,7 +370,7 @@ ELEM *
tcp_seg_interleave_overwrites(ELEM *seg)
{
ELEM *s, *new;
- u_char nulls[PACKET], *newdata;
+ u_char nulls[LIBNET_PACKET], *newdata;
u_long newseq;
int newlen;
@@ -387,21 +387,21 @@ tcp_seg_interleave_overwrites(ELEM *seg)
newlen = (ntohs(iph->ip_len) - (ip_hl + tcp_hl)) / 2;
newseq = ntohl(tcph->th_seq) + newlen;
- if (!(newdata = malloc(ip_hl + TCP_H + newlen)))
+ if (!(newdata = malloc(ip_hl + LIBNET_TCP_H + newlen)))
return NULL;
/* Copy in IP, TCP headers and data. */
- memcpy(newdata, s->data, ip_hl + TCP_H);
- memcpy(newdata + ip_hl + TCP_H, nulls, newlen);
+ memcpy(newdata, s->data, ip_hl + LIBNET_TCP_H);
+ memcpy(newdata + ip_hl + LIBNET_TCP_H, nulls, newlen);
/* Correct IP length, TCP header length, TCP seqnum, TCP checksum. */
- ((struct ip *)newdata)->ip_len = htons(ip_hl + TCP_H + newlen);
+ ((struct ip *)newdata)->ip_len = htons(ip_hl + LIBNET_TCP_H + newlen);
((struct tcphdr *)(newdata + ip_hl))->th_seq = htonl(newseq);
- ((struct tcphdr *)(newdata + ip_hl))->th_off = TCP_H / 4; /* XXX - PAWS! */
- libnet_do_checksum(newdata, IPPROTO_TCP, TCP_H + newlen);
+ ((struct tcphdr *)(newdata + ip_hl))->th_off = LIBNET_TCP_H / 4; /* XXX - PAWS! */
+ libnet_do_checksum(newdata, IPPROTO_TCP, LIBNET_TCP_H + newlen);
/* Add null fragment after current fragment. */
- new = list_elem(newdata, ip_hl + TCP_H + newlen);
+ new = list_elem(newdata, ip_hl + LIBNET_TCP_H + newlen);
free(newdata);
if (!list_add(s, new))