#include "os.h"
#include "common/common.h"
#include "common/mopdef.h"
#include "common/device.h"
#include "common/pf.h"
#include "common/file.h"
struct if_info *iflist;
void Usage(void);
void mopProcess(struct if_info *, u_char *);
int AllFlag = 0;
int VersionFlag = 0;
int promisc = 0;
extern char *__progname;
extern char version[];
int
main(int argc, char **argv)
{
struct dllist dl;
int op, i;
char *filename, *p;
struct if_info *ii;
int error;
openlog(__progname, LOG_PID | LOG_CONS, LOG_DAEMON);
opterr = 0;
while ((op = getopt(argc, argv, "av")) != -1) {
switch (op) {
case 'a':
AllFlag = 1;
break;
case 'v':
VersionFlag = 1;
break;
default:
Usage();
}
}
if (VersionFlag)
printf("%s: Version %s\n", __progname, version);
if (AllFlag) {
if (VersionFlag)
printf("\n");
iflist = NULL;
deviceInitAll();
if (iflist == NULL) {
printf("No interface\n");
} else {
printf("Interface Address\n");
p = NULL;
for (ii = iflist; ii; ii = ii->next) {
if (p != NULL) {
if (strcmp(p,ii->if_name) == 0)
continue;
}
printf("%-9s %x:%x:%x:%x:%x:%x\n",
ii->if_name,
ii->eaddr[0],ii->eaddr[1],ii->eaddr[2],
ii->eaddr[3],ii->eaddr[4],ii->eaddr[5]);
p = ii->if_name;
}
}
}
if (VersionFlag || AllFlag)
i = 1;
else
i = 0;
while (argc > optind) {
if (i) printf("\n");
i++;
filename = argv[optind++];
printf("Checking: %s\n",filename);
dl.ldfd = open(filename, O_RDONLY);
if (dl.ldfd == -1) {
printf("Unknown file.\n");
} else {
if ((error = CheckElfFile(dl.ldfd)) == 0) {
if (GetElf32FileInfo(&dl, INFO_PRINT) < 0 &&
GetElf64FileInfo(&dl, INFO_PRINT) < 0) {
printf("Some failure in GetElfXXFileInfo\n");
}
} else if ((error = CheckAOutFile(dl.ldfd)) == 0) {
if (GetAOutFileInfo(&dl, INFO_PRINT) < 0) {
printf("Some failure in GetAOutFileInfo\n");
}
} else if ((error = CheckMopFile(dl.ldfd)) == 0) {
if (GetMopFileInfo(&dl, INFO_PRINT) < 0) {
printf("Some failure in GetMopFileInfo\n");
}
}
}
(void)close(dl.ldfd);
}
return 0;
}
void
Usage(void)
{
fprintf(stderr, "usage: %s [-av] [file ...]\n", __progname);
exit(1);
}
void
mopProcess(struct if_info *ii, u_char *pkt)
{
}