2 #include <sys/socket.h>
7 #include <netinet/in.h>
18 struct frauth
*frap
= &fra
;
19 fr_info_t
*fin
= &fra
.fra_info
;
20 fr_ip_t
*fi
= &fin
->fin_fi
;
24 fd
= open(IPL_AUTH
, O_RDWR
);
25 while (ioctl(fd
, SIOCAUTHW
, &frap
) == 0) {
26 if (fra
.fra_info
.fin_out
)
27 fra
.fra_pass
= FR_OUTQUE
;
29 fra
.fra_pass
= FR_INQUE
;
31 printf("%s ", inet_ntoa(fi
->fi_src
));
32 if (fi
->fi_fl
& FI_TCPUDP
)
33 printf("port %d ", fin
->fin_data
[0]);
34 printf("-> %s ", inet_ntoa(fi
->fi_dst
));
35 if (fi
->fi_fl
& FI_TCPUDP
)
36 printf("port %d ", fin
->fin_data
[1]);
38 printf("Allow packet through ? [y/n]");
40 if (!fgets(yn
, sizeof(yn
), stdin
))
43 if (yn
[0] == 'n' || yn
[0] == 'N')
44 fra
.fra_pass
|= FR_BLOCK
;
45 else if (yn
[0] == 'y' || yn
[0] == 'Y') {
46 fra
.fra_pass
|= FR_PASS
;
47 if (fra
.fra_info
.fin_fi
.fi_fl
& FI_TCPUDP
)
48 fra
.fra_pass
|= FR_KEEPSTATE
;
50 fra
.fra_pass
|= FR_NOMATCH
;
51 printf("answer = %c (%x), id %d idx %d\n", yn
[0],
52 fra
.fra_pass
, fra
.fra_info
.fin_id
, fra
.fra_index
);
53 if (ioctl(fd
, SIOCAUTHR
, &frap
) != 0)
56 fprintf(stderr
, "errno=%d \n", errno
);
57 perror("frauth-SIOCAUTHW");