2 * lib/ddp_gr.c Prinbting of DDP (AppleTalk) routing table
7 * Version: $Id: ddp_gr.c,v 1.4 2002/06/02 05:25:15 ecki Exp $
9 * Author: Ajax <ajax@firest0rm.org>
12 * 2002-06-02 integrated into main source by Bernd Eckenfels
16 /* TODO: name lookups (/etc/atalk.names? NBP?) */
21 #include <asm/types.h>
22 #include <sys/types.h>
23 #include <sys/socket.h>
24 #include <linux/atalk.h>
31 #include <netinet/in.h>
32 #include "net-support.h"
33 #include "pathnames.h"
36 /* stolen from inet_gr.c */
37 #define flags_decode(i,o) do { \
39 if (i & RTF_UP) strcat(o, "U"); \
40 if (i & RTF_GATEWAY) strcat(o, "G"); \
41 if (i & RTF_REJECT) strcat(o, "!"); \
42 if (i & RTF_HOST) strcat(o, "H"); \
43 if (i & RTF_REINSTATE) strcat(o, "R"); \
44 if (i & RTF_DYNAMIC) strcat(o, "D"); \
45 if (i & RTF_MODIFIED) strcat(o, "M"); \
46 if (i & RTF_DEFAULT) strcat(o, "d"); \
47 if (i & RTF_ALLONLINK) strcat(o, "a"); \
48 if (i & RTF_ADDRCONF) strcat(o, "c"); \
49 if (i & RTF_NONEXTHOP) strcat(o, "o"); \
50 if (i & RTF_EXPIRES) strcat(o, "e"); \
51 if (i & RTF_CACHE) strcat(o, "c"); \
52 if (i & RTF_FLOW) strcat(o, "f"); \
53 if (i & RTF_POLICY) strcat(o, "p"); \
54 if (i & RTF_LOCAL) strcat(o, "l"); \
55 if (i & RTF_MTU) strcat(o, "u"); \
56 if (i & RTF_WINDOW) strcat(o, "w"); \
57 if (i & RTF_IRTT) strcat(o, "i"); \
58 if (i & RTF_NOTCACHED) strcat(o, "n"); \
61 int DDP_rprint(int options
)
64 char *dest
, *gw
, *dev
, *flags
;
66 char *hdr
= "Destination Gateway Device Flags";
68 fp
= fopen(_PATH_PROCNET_ATALK_ROUTE
, "r");
71 perror("Error opening " _PATH_PROCNET_ATALK_ROUTE
);
72 fprintf(stderr
, "DDP (AppleTalk) not configured on this system.\n");
76 fscanf(fp
, "%as %as %as %as\n", &dest
, &gw
, &flags
, &dev
);
77 free(dest
); free(gw
); free(dev
); free(flags
);
81 while (fscanf(fp
, "%as %as %as %as\n", &dest
, &gw
, &flags
, &dev
) == 4) {
82 int iflags
= atoi(flags
);
83 flags_decode(iflags
, oflags
);
84 printf("%-16s%-16s%-16s%-s\n", dest
, gw
, dev
, oflags
);
85 free(dest
); free(gw
); free(dev
); free(flags
);