Merge remote-tracking branch 'origin/master'
[unleashed/lotheac.git] / usr / src / cmd / ipf / lib / common / checkrev.c
blobf95cc7977a70b0bf59cbd107892eaaa9f57fd434
1 /*
2 * Copyright (C) 1993-2001 by Darren Reed.
4 * See the IPFILTER.LICENCE file for details on licencing.
6 * $Id: checkrev.c,v 1.12.2.1 2004/03/09 14:44:39 darrenr Exp $
7 */
9 #include <sys/ioctl.h>
10 #include <fcntl.h>
12 #include "ipf.h"
13 #include "netinet/ipl.h"
15 int checkrev(ipfname)
16 char *ipfname;
18 static int vfd = -1;
19 struct friostat fio, *fiop = &fio;
20 ipfobj_t ipfo;
22 bzero((caddr_t)&ipfo, sizeof(ipfo));
23 ipfo.ipfo_rev = IPFILTER_VERSION;
24 ipfo.ipfo_size = sizeof(*fiop);
25 ipfo.ipfo_ptr = (void *)fiop;
26 ipfo.ipfo_type = IPFOBJ_IPFSTAT;
28 if ((vfd == -1) && ((vfd = open(ipfname, O_RDONLY)) == -1)) {
29 perror("open device");
30 return -1;
33 if (ioctl(vfd, SIOCGETFS, &ipfo)) {
34 perror("ioctl(SIOCGETFS)");
35 close(vfd);
36 vfd = -1;
37 return -1;
40 if (strncmp(IPL_VERSION, fio.f_version, sizeof(fio.f_version))) {
41 return -1;
43 return 0;