GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: usr.sbin/mopd/mopchk/mopchk.c Lines: 0 53 0.0 %
Date: 2017-11-07 Branches: 0 41 0.0 %

Line Branch Exec Source
1
/*	$OpenBSD: mopchk.c,v 1.18 2015/02/09 23:00:14 deraadt Exp $	*/
2
3
/*
4
 * Copyright (c) 1995-96 Mats O Jansson.  All rights reserved.
5
 *
6
 * Redistribution and use in source and binary forms, with or without
7
 * modification, are permitted provided that the following conditions
8
 * are met:
9
 * 1. Redistributions of source code must retain the above copyright
10
 *    notice, this list of conditions and the following disclaimer.
11
 * 2. Redistributions in binary form must reproduce the above copyright
12
 *    notice, this list of conditions and the following disclaimer in the
13
 *    documentation and/or other materials provided with the distribution.
14
 *
15
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
 */
26
27
/*
28
 * mopchk - MOP Check Utility
29
 *
30
 * Usage:	mopchk [-av] [file ...]
31
 */
32
33
#include "os.h"
34
#include "common/common.h"
35
#include "common/mopdef.h"
36
#include "common/device.h"
37
#include "common/pf.h"
38
#include "common/file.h"
39
40
/*
41
 * The list of all interfaces that are being listened to.
42
 */
43
struct if_info *iflist;
44
45
void   Usage(void);
46
void   mopProcess(struct if_info *, u_char *);
47
48
int     AllFlag = 0;		/* listen on "all" interfaces  */
49
int	VersionFlag = 0;	/* Show version */
50
int	promisc = 0;		/* promisc mode not needed */
51
extern char *__progname;
52
extern char version[];
53
54
int
55
main(argc, argv)
56
	int     argc;
57
	char  **argv;
58
{
59
	struct dllist dl;
60
	int     op, i;
61
	char   *filename, *p;
62
	struct if_info *ii;
63
	int	error;
64
65
	/* All error reporting is done through syslogs. */
66
	openlog(__progname, LOG_PID | LOG_CONS, LOG_DAEMON);
67
68
	opterr = 0;
69
	while ((op = getopt(argc, argv, "av")) != -1) {
70
		switch (op) {
71
		case 'a':
72
			AllFlag = 1;
73
			break;
74
		case 'v':
75
			VersionFlag = 1;
76
			break;
77
		default:
78
			Usage();
79
			/* NOTREACHED */
80
		}
81
	}
82
83
	if (VersionFlag)
84
		printf("%s: Version %s\n", __progname, version);
85
86
	if (AllFlag) {
87
		if (VersionFlag)
88
			printf("\n");
89
		iflist = NULL;
90
		deviceInitAll();
91
		if (iflist == NULL) {
92
			printf("No interface\n");
93
		} else {
94
			printf("Interface Address\n");
95
			p = NULL;
96
			for (ii = iflist; ii; ii = ii->next) {
97
				if (p != NULL) {
98
					if (strcmp(p,ii->if_name) == 0)
99
						continue;
100
				}
101
				printf("%-9s %x:%x:%x:%x:%x:%x\n",
102
				       ii->if_name,
103
				       ii->eaddr[0],ii->eaddr[1],ii->eaddr[2],
104
				       ii->eaddr[3],ii->eaddr[4],ii->eaddr[5]);
105
				p = ii->if_name;
106
			}
107
		}
108
	}
109
110
	if (VersionFlag || AllFlag)
111
		i = 1;
112
	else
113
		i = 0;
114
115
	while (argc > optind) {
116
		if (i)	printf("\n");
117
		i++;
118
		filename = argv[optind++];
119
		printf("Checking: %s\n",filename);
120
		dl.ldfd = open(filename, O_RDONLY, 0);
121
		if (dl.ldfd == -1) {
122
			printf("Unknown file.\n");
123
		} else {
124
			if ((error = CheckElfFile(dl.ldfd)) == 0) {
125
				if (GetElf32FileInfo(&dl, INFO_PRINT) < 0 &&
126
				    GetElf64FileInfo(&dl, INFO_PRINT) < 0) {
127
					printf("Some failure in GetElfXXFileInfo\n");
128
				}
129
			} else if ((error = CheckAOutFile(dl.ldfd)) == 0) {
130
				if (GetAOutFileInfo(&dl, INFO_PRINT) < 0) {
131
					printf("Some failure in GetAOutFileInfo\n");
132
				}
133
			} else if ((error = CheckMopFile(dl.ldfd)) == 0) {
134
				if (GetMopFileInfo(&dl, INFO_PRINT) < 0) {
135
					printf("Some failure in GetMopFileInfo\n");
136
				}
137
			};
138
		}
139
		(void)close(dl.ldfd);
140
	}
141
	return 0;
142
}
143
144
void
145
Usage()
146
{
147
	fprintf(stderr, "usage: %s [-av] [file ...]\n", __progname);
148
	exit(1);
149
}
150
151
/*
152
 * Process incoming packages, NOT.
153
 */
154
/* ARGSUSED */
155
void
156
mopProcess(ii, pkt)
157
	struct if_info *ii;
158
	u_char *pkt;
159
{
160
}
161