add iptraf (thanks to Thomas Reifferscheid)
[oweals/openwrt.git] / openwrt / package / iptraf / patches / iptraf-2.7.0-ifaces.patch
1 diff -ruN iptraf-2.7.0-old/src/dirs.h iptraf-2.7.0-new/src/dirs.h
2 --- iptraf-2.7.0-old/src/dirs.h 2001-05-03 12:44:11.000000000 +0200
3 +++ iptraf-2.7.0-new/src/dirs.h 2005-10-04 21:51:26.000000000 +0200
4 @@ -148,11 +148,10 @@
5  #define PORTFILE       get_path(T_WORKDIR, "ports.dat")
6  
7  /*
8 - * The Ethernet and FDDI host description files
9 + * The Ethernet host description files
10   */
11   
12  #define ETHFILE                get_path(T_WORKDIR, "ethernet.desc")
13 -#define FDDIFILE       get_path(T_WORKDIR, "fddi.desc")
14  
15  /*
16   * The rvnamed program file
17 diff -ruN iptraf-2.7.0-old/src/hostmon.c iptraf-2.7.0-new/src/hostmon.c
18 --- iptraf-2.7.0-old/src/hostmon.c      2002-04-16 04:15:25.000000000 +0200
19 +++ iptraf-2.7.0-new/src/hostmon.c      2005-10-04 21:52:02.000000000 +0200
20 @@ -30,7 +30,6 @@
21  #include <netinet/in.h>
22  #include <linux/if_packet.h>
23  #include <linux/if_ether.h>
24 -#include <linux/if_fddi.h>
25  #include <linux/if_tr.h>
26  #include <net/if_arp.h>
27  #include <stdlib.h>
28 @@ -294,8 +293,6 @@
29             wprintw(table->tabwin, "Ethernet");
30         else if (entry->un.desc.linktype == LINK_PLIP)
31             wprintw(table->tabwin, "PLIP");
32 -       else if (entry->un.desc.linktype == LINK_FDDI)
33 -           wprintw(table->tabwin, "FDDI");
34  
35         wprintw(table->tabwin, " HW addr: %s", entry->un.desc.ascaddr);
36  
37 @@ -771,7 +768,6 @@
38  
39      initethtab(&table, options->actmode);
40      loaddesclist(&elist, LINK_ETHERNET, WITHETCETHERS);
41 -    loaddesclist(&flist, LINK_FDDI, WITHETCETHERS);
42      
43      if (logging) {
44          if (strcmp(current_logfile, "") == 0)
45 @@ -854,7 +850,7 @@
46             }
47             linktype = getlinktype(fromaddr.sll_hatype, ifname, -1, NULL);
48  
49 -           if ((linktype == LINK_ETHERNET) || (linktype == LINK_FDDI)
50 +           if ((linktype == LINK_ETHERNET)
51                 || (linktype == LINK_PLIP) || (linktype == LINK_TR)) {
52                 if (fromaddr.sll_protocol == htons(ETH_P_IP))
53                     is_ip = 1;
54 @@ -871,12 +867,6 @@
55                     memcpy(scratch_daddr, ((struct ethhdr *) buf)->h_dest,
56                            ETH_ALEN);
57                     list = &elist;
58 -               } else if (linktype == LINK_FDDI) {
59 -                   memcpy(scratch_saddr, ((struct fddihdr *) buf)->saddr,
60 -                          FDDI_K_ALEN);
61 -                   memcpy(scratch_daddr, ((struct fddihdr *) buf)->daddr,
62 -                          FDDI_K_ALEN);
63 -                   list = &flist;
64                 } else if (linktype == LINK_TR) {
65                     memcpy(scratch_saddr, ((struct trh_hdr *) buf)->saddr,
66                            TR_ALEN);
67 diff -ruN iptraf-2.7.0-old/src/ifaces.c iptraf-2.7.0-new/src/ifaces.c
68 --- iptraf-2.7.0-old/src/ifaces.c       2002-05-08 11:43:27.000000000 +0200
69 +++ iptraf-2.7.0-new/src/ifaces.c       2005-10-04 21:54:00.000000000 +0200
70 @@ -37,9 +37,9 @@
71  extern int daemonized;
72  
73  char ifaces[][6] =
74 -    { "lo", "eth", "sl", "ppp", "ippp", "plip", "fddi", "isdn", "dvb",
75 +    { "lo", "eth", "sl", "ppp", "ippp", "plip", "isdn", "dvb",
76        "pvc", "hdlc", "ipsec", "sbni", "tr", "wvlan", "wlan", "sm2", "sm3",
77 -      "pent", "lec" };
78 +      "pent", "lec", "vlan" };
79  
80  char *ltrim(char *buf)
81  {
82 diff -ruN iptraf-2.7.0-old/src/landesc.c iptraf-2.7.0-new/src/landesc.c
83 --- iptraf-2.7.0-old/src/landesc.c      2001-11-27 11:23:32.000000000 +0100
84 +++ iptraf-2.7.0-new/src/landesc.c      2005-10-04 21:57:33.000000000 +0200
85 @@ -82,8 +82,6 @@
86  
87      if (linktype == LINK_ETHERNET)
88         fd = fopen(ETHFILE, "r");
89 -    else if (linktype == LINK_FDDI)
90 -       fd = fopen(FDDIFILE, "r");
91  
92      if (fd == NULL) {
93         return;
94 @@ -204,8 +202,6 @@
95  
96      if (linktype == LINK_ETHERNET)
97         fd = fopen(ETHFILE, "w");
98 -    else if (linktype == LINK_FDDI)
99 -       fd = fopen(FDDIFILE, "w");
100  
101      if (fd < 0) {
102         etherr();
103 diff -ruN iptraf-2.7.0-old/src/links.h iptraf-2.7.0-new/src/links.h
104 --- iptraf-2.7.0-old/src/links.h        2001-12-18 03:45:16.000000000 +0100
105 +++ iptraf-2.7.0-new/src/links.h        2005-10-04 21:57:17.000000000 +0200
106 @@ -5,7 +5,6 @@
107  #define LINK_LOOPBACK          5
108  #define LINK_ISDN_RAWIP                6
109  #define LINK_ISDN_CISCOHDLC    7
110 -#define LINK_FDDI              8
111  #define LINK_FRAD              9
112  #define LINK_DLCI              10
113  #define LINK_TR                        11
114 diff -ruN iptraf-2.7.0-old/src/log.c iptraf-2.7.0-new/src/log.c
115 --- iptraf-2.7.0-old/src/log.c  2002-04-22 05:59:15.000000000 +0200
116 +++ iptraf-2.7.0-new/src/log.c  2005-10-04 21:57:51.000000000 +0200
117 @@ -465,8 +465,6 @@
118                         ptmp->un.desc.ascaddr);
119             else if (ptmp->un.desc.linktype == LINK_PLIP)
120                 fprintf(fd, "\nPLIP address: %s", ptmp->un.desc.ascaddr);
121 -           else if (ptmp->un.desc.linktype == LINK_FDDI)
122 -               fprintf(fd, "\nFDDI address: %s", ptmp->un.desc.ascaddr);
123  
124             if (ptmp->un.desc.withdesc)
125                 fprintf(fd, " (%s)", ptmp->un.desc.desc);
126 diff -ruN iptraf-2.7.0-old/src/options.c iptraf-2.7.0-new/src/options.c
127 --- iptraf-2.7.0-old/src/options.c      2001-12-28 10:39:15.000000000 +0100
128 +++ iptraf-2.7.0-new/src/options.c      2005-10-04 21:58:15.000000000 +0200
129 @@ -67,8 +67,6 @@
130      tx_additem(menu, NULL, NULL);
131      tx_additem(menu, " ^E^thernet/PLIP host descriptions...",
132             "Manages descriptions for Ethernet and PLIP addresses");
133 -    tx_additem(menu, " ^F^DDI/Token Ring host descriptions...",
134 -           "Manages descriptions for FDDI and FDDI addresses");
135      tx_additem(menu, NULL, NULL);
136      tx_additem(menu, " E^x^it configuration", "Returns to main menu");
137  }
138 @@ -366,9 +364,6 @@
139         case 14:
140             ethdescmgr(LINK_ETHERNET);
141             break;
142 -       case 15:
143 -           ethdescmgr(LINK_FDDI);
144 -           break;
145         }
146  
147         indicatesetting(row, options, statwin);
148 diff -ruN iptraf-2.7.0-old/src/othptab.c iptraf-2.7.0-new/src/othptab.c
149 --- iptraf-2.7.0-old/src/othptab.c      2001-12-28 03:23:59.000000000 +0100
150 +++ iptraf-2.7.0-new/src/othptab.c      2005-10-04 21:58:33.000000000 +0200
151 @@ -19,7 +19,6 @@
152  #include <asm/types.h>
153  #include <linux/if_ether.h>
154  #include <linux/if_tr.h>
155 -#include <linux/if_fddi.h>
156  #include <winops.h>
157  #include "arphdr.h"
158  #include "options.h"
159 @@ -139,11 +138,6 @@
160                         new_entry->smacaddr);
161             convmacaddr(((struct ethhdr *) packet)->h_dest,
162                         new_entry->dmacaddr);
163 -       } else if (linkproto == LINK_FDDI) {
164 -           convmacaddr(((struct fddihdr *) packet)->saddr,
165 -                       new_entry->smacaddr);
166 -           convmacaddr(((struct fddihdr *) packet)->daddr,
167 -                       new_entry->dmacaddr);
168          } else if (linkproto == LINK_TR) {
169              convmacaddr(((struct trh_hdr *) packet)->saddr,
170                          new_entry->smacaddr);
171 @@ -373,8 +367,7 @@
172         strcat(msgstring, scratchpad);
173  
174         if ((entry->linkproto == LINK_ETHERNET) ||
175 -           (entry->linkproto == LINK_PLIP) ||
176 -           (entry->linkproto == LINK_FDDI)) {
177 +           (entry->linkproto == LINK_PLIP)) {
178             sprintf(scratchpad, " from %s to %s on %s",
179                     entry->smacaddr, entry->dmacaddr, entry->iface);
180  
181 diff -ruN iptraf-2.7.0-old/src/packet.c iptraf-2.7.0-new/src/packet.c
182 --- iptraf-2.7.0-old/src/packet.c       2002-05-08 11:44:08.000000000 +0200
183 +++ iptraf-2.7.0-new/src/packet.c       2005-10-04 21:59:12.000000000 +0200
184 @@ -35,7 +35,6 @@
185  #include <sys/ioctl.h>
186  #include <linux/if_packet.h>
187  #include <linux/if_ether.h>
188 -#include <linux/if_fddi.h>
189  #include <linux/if_tr.h>
190  #include <linux/isdn.h>
191  #include <linux/sockios.h>
192 @@ -80,10 +79,10 @@
193      case ARPHRD_ETHER:
194         if (strncmp(ifname, "eth", 3) == 0)
195             result = LINK_ETHERNET;
196 +       else if (strncmp(ifname, "vlan", 4) == 0)
197 +           result = LINK_ETHERNET;
198         else if (strncmp(ifname, "plip", 4) == 0)
199             result = LINK_PLIP;
200 -       else if (strncmp(ifname, "fddi", 4) == 0)    /* For some Ethernet- */
201 -           result = LINK_ETHERNET;                  /* emulated FDDI ifaces */
202         else if (strncmp(ifname, "dvb", 3) == 0)
203             result = LINK_ETHERNET;
204         else if (strncmp(ifname, "sbni", 4) == 0)
205 @@ -127,9 +126,6 @@
206      case ARPHRD_PPP:
207         result = LINK_PPP;
208         break;
209 -    case ARPHRD_FDDI:
210 -       result = LINK_FDDI;
211 -       break;
212      case ARPHRD_IEEE802:
213      case ARPHRD_IEEE802_TR:
214          result = LINK_TR;
215 @@ -179,19 +175,6 @@
216         *packet = tpacket + 4;
217         *readlen -= 4;
218         break;
219 -    case LINK_FDDI:
220 -       *packet = tpacket + sizeof(struct fddihdr);
221 -       *readlen -= sizeof(struct fddihdr);
222 -
223 -       /*
224 -        * Move IP data into an aligned buffer.  96 bytes should be sufficient
225 -        * for IP and TCP headers with reasonable numbers of options and some
226 -        * data.
227 -        */
228 -
229 -       memmove(aligned_buf, *packet, min(SNAPSHOT_LEN, *readlen));
230 -       *packet = aligned_buf;
231 -       break;
232      case LINK_TR:
233          /*
234           * Token Ring patch supplied by Tomas Dvorak 
235 diff -ruN iptraf-2.7.0-old/src/promisc.c iptraf-2.7.0-new/src/promisc.c
236 --- iptraf-2.7.0-old/src/promisc.c      2002-01-16 02:51:03.000000000 +0100
237 +++ iptraf-2.7.0-new/src/promisc.c      2005-10-04 22:05:25.000000000 +0200
238 @@ -81,7 +81,7 @@
239              */
240  
241             if ((strncmp(buf, "eth", 3) == 0) ||
242 -               (strncmp(buf, "fddi", 4) == 0) ||
243 +           (strncmp(buf, "vlan", 4) == 0) ||
244                 (strncmp(ptmp->params.ifname, "wvlan", 4) == 0) ||
245                 (strncmp(ptmp->params.ifname, "lec", 3) == 0) ||
246                 (accept_unsupported_interfaces)) {
247 @@ -194,7 +194,7 @@
248  
249      while (ptmp != NULL) {
250         if (((strncmp(ptmp->params.ifname, "eth", 3) == 0) ||
251 -            (strncmp(ptmp->params.ifname, "fddi", 4) == 0) ||
252 +            (strncmp(ptmp->params.ifname, "vlan", 4) == 0) ||
253              (strncmp(ptmp->params.ifname, "wvlan", 4) == 0) ||
254              (strncmp(ptmp->params.ifname, "lec", 3) == 0)) &&
255              (ptmp->params.state_valid)) {
256 diff -ruN iptraf-2.7.0-old/src/promisc.~c iptraf-2.7.0-new/src/promisc.~c
257 --- iptraf-2.7.0-old/src/promisc.~c     1970-01-01 01:00:00.000000000 +0100
258 +++ iptraf-2.7.0-new/src/promisc.~c     2005-10-04 22:00:02.000000000 +0200
259 @@ -0,0 +1,238 @@
260 +/***
261 +
262 +promisc.c      - handles the promiscuous mode flag for the Ethernet/FDDI
263 +                 interfaces
264 +                 
265 +Written by Gerard Paul Java
266 +Copyright (c) Gerard Paul Java 1997, 1998
267 +
268 +This module contains functions that manage the promiscuous states of
269 +the interfaces.
270 +
271 +This software is open source; you can redistribute it and/or modify
272 +it under the terms of the GNU General Public License as published by
273 +the Free Software Foundation; either version 2 of the License, or
274 +(at your option) any later version.
275 +
276 +This program is distributed WITHOUT ANY WARRANTY; without even the
277 +implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
278 +See the GNU General Public License in the included COPYING file for
279 +details.
280 +
281 +***/
282 +
283 +#include <curses.h>
284 +#include <panel.h>
285 +#include <sys/ioctl.h>
286 +#include <sys/socket.h>
287 +#include <sys/types.h>
288 +#include <sys/stat.h>
289 +#include <fcntl.h>
290 +#include <unistd.h>
291 +#include <stdlib.h>
292 +#include <string.h>
293 +#include <netinet/in.h>
294 +#include <net/if.h>
295 +#include <linux/if_ether.h>
296 +#include "ifstats.h"
297 +#include "ifaces.h"
298 +#include "error.h"
299 +#include "promisc.h"
300 +#include "dirs.h"
301 +
302 +#define PROMISC_MSG_MAX 80
303 +
304 +extern int daemonized;
305 +extern int accept_unsupported_interfaces;
306 +
307 +void init_promisc_list(struct promisc_states **list)
308 +{
309 +    FILE *fd;
310 +    int ifd;
311 +    char buf[8];
312 +    struct promisc_states *ptmp;
313 +    struct promisc_states *tail = NULL;
314 +    struct ifreq ifr;
315 +    int istat;
316 +    char err_msg[80];
317 +
318 +    ifd = socket(PF_INET, SOCK_DGRAM, 0);
319 +
320 +    *list = NULL;
321 +    fd = open_procnetdev();
322 +
323 +    do {
324 +       get_next_iface(fd, buf);
325 +
326 +       if (strcmp(buf, "") != 0) {
327 +           ptmp = malloc(sizeof(struct promisc_states));
328 +           strcpy(ptmp->params.ifname, buf);
329 +
330 +           if (*list == NULL) {
331 +               *list = ptmp;
332 +           } else
333 +               tail->next_entry = ptmp;
334 +
335 +           tail = ptmp;
336 +           ptmp->next_entry = NULL;
337 +
338 +           /*
339 +            * Retrieve and save interface flags
340 +            */
341 +
342 +           if ((strncmp(buf, "eth", 3) == 0) ||
343 +           (strncmp(buf, "vlan", 4) == 0) ||
344 +               (strncmp(buf, "fddi", 4) == 0) ||
345 +               (strncmp(ptmp->params.ifname, "wvlan", 4) == 0) ||
346 +               (strncmp(ptmp->params.ifname, "lec", 3) == 0) ||
347 +               (accept_unsupported_interfaces)) {
348 +               strcpy(ifr.ifr_name, buf);
349 +
350 +               istat = ioctl(ifd, SIOCGIFFLAGS, &ifr);
351 +
352 +               if (istat < 0) {
353 +                   sprintf(err_msg,
354 +                           "Unable to obtain interface parameters for %s",
355 +                           buf);
356 +                   write_error(err_msg, daemonized);
357 +                   ptmp->params.state_valid = 0;
358 +               } else {
359 +                   ptmp->params.saved_state = ifr.ifr_flags;
360 +                   ptmp->params.state_valid = 1;
361 +               }
362 +           }
363 +       }
364 +    } while (strcmp(buf, "") != 0);
365 +}
366 +
367 +/*
368 + * Save interfaces and their states to a temporary file.  Used only by the
369 + * first IPTraf instance.  Needed in case there are subsequent, simultaneous 
370 + * instances of IPTraf, which may still need promiscuous mode even after
371 + * the first instance exits.  These subsequent instances will need to restore
372 + * the promiscuous state from this file.
373 + */
374 +
375 +void save_promisc_list(struct promisc_states *list)
376 +{
377 +    int fd;
378 +    struct promisc_states *ptmp = list;
379 +
380 +    fd = open(PROMISCLISTFILE, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
381 +
382 +    if (fd < 0) {
383 +       write_error("Unable to save interface flags", daemonized);
384 +       return;
385 +    }
386 +
387 +    while (ptmp != NULL) {
388 +       write(fd, &(ptmp->params), sizeof(struct promisc_params));
389 +       ptmp = ptmp->next_entry;
390 +    }
391 +
392 +    close(fd);
393 +}
394 +
395 +/*
396 + * Load promiscuous states into list
397 + */
398 +
399 +void load_promisc_list(struct promisc_states **list)
400 +{
401 +    int fd;
402 +    struct promisc_states *ptmp = NULL;
403 +    struct promisc_states *tail = NULL;
404 +    int br;
405 +
406 +    fd = open(PROMISCLISTFILE, O_RDONLY);
407 +
408 +    if (fd < 0) {
409 +       write_error("Unable to retrieve saved interface flags",
410 +                   daemonized);
411 +       *list = NULL;
412 +       return;
413 +    }
414 +
415 +    do {
416 +       ptmp = malloc(sizeof(struct promisc_states));
417 +       br = read(fd, &(ptmp->params), sizeof(struct promisc_params));
418 +
419 +       if (br > 0) {
420 +           if (tail != NULL)
421 +               tail->next_entry = ptmp;
422 +           else
423 +               *list = ptmp;
424 +
425 +           ptmp->next_entry = NULL;
426 +           tail = ptmp;
427 +       } else
428 +           free(ptmp);
429 +    } while (br > 0);
430 +
431 +    close(fd);
432 +}
433 +
434 +/*
435 + * Set/restore interface promiscuous mode.
436 + */
437 +
438 +void srpromisc(int mode, struct promisc_states *list)
439 +{
440 +    int fd;
441 +    struct ifreq ifr;
442 +    struct promisc_states *ptmp;
443 +    int istat;
444 +    char fullmsg[PROMISC_MSG_MAX];
445 +
446 +    ptmp = list;
447 +
448 +    fd = socket(PF_INET, SOCK_DGRAM, 0);
449 +
450 +    if (fd < 0) {
451 +       write_error("Unable to open socket for flag change", daemonized);
452 +       return;
453 +    }
454 +
455 +    while (ptmp != NULL) {
456 +       if (((strncmp(ptmp->params.ifname, "eth", 3) == 0) ||
457 +            (strncmp(ptmp->params.ifname, "vlan", 4) == 0) ||
458 +            (strncmp(ptmp->params.ifname, "wvlan", 4) == 0) ||
459 +            (strncmp(ptmp->params.ifname, "lec", 3) == 0)) &&
460 +            (ptmp->params.state_valid)) {
461 +
462 +           strcpy(ifr.ifr_name, ptmp->params.ifname);
463 +
464 +           if (mode)
465 +               ifr.ifr_flags = ptmp->params.saved_state | IFF_PROMISC;
466 +           else
467 +               ifr.ifr_flags = ptmp->params.saved_state;
468 +
469 +           istat = ioctl(fd, SIOCSIFFLAGS, &ifr);
470 +
471 +           if (istat < 0) {
472 +               sprintf(fullmsg, "Promisc change failed for %s",
473 +                       ptmp->params.ifname);
474 +               write_error(fullmsg, daemonized);
475 +           }
476 +       }
477 +       ptmp = ptmp->next_entry;
478 +    }
479 +
480 +    close(fd);
481 +}
482 +
483 +void destroy_promisc_list(struct promisc_states **list)
484 +{
485 +    struct promisc_states *ptmp = *list;
486 +    struct promisc_states *ctmp;
487 +
488 +    if (ptmp != NULL)
489 +       ctmp = ptmp->next_entry;
490 +
491 +    while (ptmp != NULL) {
492 +       free(ptmp);
493 +       ptmp = ctmp;
494 +       if (ctmp != NULL)
495 +           ctmp = ctmp->next_entry;
496 +    }
497 +}
498 diff -ruN iptraf-2.7.0-old/src/rvnamed.c iptraf-2.7.0-new/src/rvnamed.c
499 --- iptraf-2.7.0-old/src/rvnamed.c      2002-05-02 03:37:34.000000000 +0200
500 +++ iptraf-2.7.0-new/src/rvnamed.c      2005-10-04 22:02:47.000000000 +0200
501 @@ -48,7 +48,6 @@
502  #include <signal.h>
503  #include <sys/wait.h>
504  #include "rvnamed.h"
505 -#include "dirs.h"
506  
507  #define NUM_CACHE_ENTRIES 2048
508  #define TIME_TARGET_MAX 30
509 diff -ruN iptraf-2.7.0-old/src/rvnamed.h iptraf-2.7.0-new/src/rvnamed.h
510 --- iptraf-2.7.0-old/src/rvnamed.h      2002-05-02 03:36:30.000000000 +0200
511 +++ iptraf-2.7.0-new/src/rvnamed.h      2005-10-04 22:03:29.000000000 +0200
512 @@ -1,9 +1,10 @@
513  #include <netinet/in.h>
514  #include <arpa/inet.h>
515 +#include "dirs.h"
516  
517 -#define CHILDSOCKNAME "/dev/rvndcldcomsk"
518 -#define PARENTSOCKNAME "/dev/rvndpntcomsk"
519 -#define IPTSOCKNAME "/dev/rvndiptcomsk"
520 +#define CHILDSOCKNAME  LOCKDIR "/rvndcldcomsk"
521 +#define PARENTSOCKNAME  LOCKDIR "/rvndpntcomsk"
522 +#define IPTSOCKNAME  LOCKDIR "/rvndiptcomsk"
523  
524  #define SOCKET_PREFIX  "isock"
525  
526 diff -ruN iptraf-2.7.0-old/src/tcptable.c iptraf-2.7.0-new/src/tcptable.c
527 --- iptraf-2.7.0-old/src/tcptable.c     2002-05-08 03:36:27.000000000 +0200
528 +++ iptraf-2.7.0-new/src/tcptable.c     2005-10-03 19:25:55.000000000 +0200
529 @@ -598,9 +598,6 @@
530         if ((linkproto == LINK_ETHERNET) || (linkproto == LINK_PLIP)) {
531             convmacaddr(((struct ethhdr *) packet)->h_source,
532                         newmacaddr);
533 -       } else if (linkproto == LINK_FDDI) {
534 -           convmacaddr(((struct fddihdr *) packet)->saddr,
535 -                       newmacaddr);
536          } else if (linkproto == LINK_TR) {
537              convmacaddr(((struct trh_hdr *) packet)->saddr, newmacaddr);
538          }
539 diff -ruN iptraf-2.7.0-old/src/tcptable.h iptraf-2.7.0-new/src/tcptable.h
540 --- iptraf-2.7.0-old/src/tcptable.h     2001-12-28 03:16:39.000000000 +0100
541 +++ iptraf-2.7.0-new/src/tcptable.h     2005-10-03 19:26:01.000000000 +0200
542 @@ -22,7 +22,6 @@
543  #include <asm/types.h>
544  #include <linux/if_packet.h>
545  #include <linux/if_ether.h>
546 -#include <linux/if_fddi.h>
547  #include <linux/if_tr.h>
548  #include <net/if.h>
549  #include <netinet/ip.h>