003 File Manager
Current Path:
/usr/src/contrib/ipfilter/lib
usr
/
src
/
contrib
/
ipfilter
/
lib
/
📁
..
📄
Makefile
(18.78 KB)
📄
addicmp.c
(446 B)
📄
addipopt.c
(1.14 KB)
📄
alist_free.c
(334 B)
📄
alist_new.c
(1.59 KB)
📄
allocmbt.c
(383 B)
📄
assigndefined.c
(452 B)
📄
bcopywrap.c
(274 B)
📄
binprint.c
(411 B)
📄
buildopts.c
(823 B)
📄
checkrev.c
(803 B)
📄
connecttcp.c
(911 B)
📄
count4bits.c
(621 B)
📄
count6bits.c
(376 B)
📄
debug.c
(556 B)
📄
dupmbt.c
(482 B)
📄
facpri.c
(2.62 KB)
📄
facpri.h
(629 B)
📄
familyname.c
(184 B)
📄
fill6bits.c
(744 B)
📄
findword.c
(413 B)
📄
flags.c
(414 B)
📄
freembt.c
(233 B)
📄
ftov.c
(204 B)
📄
gethost.c
(1.42 KB)
📄
geticmptype.c
(452 B)
📄
getifname.c
(957 B)
📄
getnattype.c
(1.15 KB)
📄
getport.c
(1.75 KB)
📄
getportproto.c
(621 B)
📄
getproto.c
(462 B)
📄
getsumd.c
(344 B)
📄
hostname.c
(1.2 KB)
📄
icmpcode.c
(493 B)
📄
icmptypename.c
(494 B)
📄
icmptypes.c
(3.34 KB)
📄
inet_addr.c
(6.1 KB)
📄
initparse.c
(300 B)
📄
interror.c
(26.29 KB)
📄
ionames.c
(1.57 KB)
📄
ipf_dotuning.c
(1.61 KB)
📄
ipf_perror.c
(698 B)
📄
ipft_hx.c
(3.13 KB)
📄
ipft_pc.c
(4.41 KB)
📄
ipft_tx.c
(10.09 KB)
📄
ipoptsec.c
(1.15 KB)
📄
kmem.c
(1.85 KB)
📄
kmem.h
(504 B)
📄
kmemcpywrap.c
(314 B)
📄
kvatoname.c
(672 B)
📄
load_dstlist.c
(1.65 KB)
📄
load_dstlistnode.c
(1.47 KB)
📄
load_file.c
(1.56 KB)
📄
load_hash.c
(2.29 KB)
📄
load_hashnode.c
(1.35 KB)
📄
load_http.c
(4.02 KB)
📄
load_pool.c
(1.59 KB)
📄
load_poolnode.c
(1.4 KB)
📄
load_url.c
(542 B)
📄
mb_hexdump.c
(541 B)
📄
msgdsize.c
(333 B)
📄
mutex_emul.c
(2.66 KB)
📄
nametokva.c
(645 B)
📄
nat_setgroupmap.c
(756 B)
📄
ntomask.c
(635 B)
📄
optname.c
(1.13 KB)
📄
optprint.c
(1.73 KB)
📄
optprintv6.c
(894 B)
📄
optvalue.c
(520 B)
📄
parsefields.c
(984 B)
📄
parseipfexpr.c
(6.19 KB)
📄
parsewhoisline.c
(2.72 KB)
📄
poolio.c
(704 B)
📄
portname.c
(902 B)
📄
prependmbt.c
(307 B)
📄
print_toif.c
(882 B)
📄
printactiveaddr.c
(643 B)
📄
printactivenat.c
(4.18 KB)
📄
printaddr.c
(1.16 KB)
📄
printaps.c
(3.53 KB)
📄
printbuf.c
(414 B)
📄
printdstl_live.c
(1.72 KB)
📄
printdstlist.c
(1.04 KB)
📄
printdstlistdata.c
(974 B)
📄
printdstlistnode.c
(1.73 KB)
📄
printdstlistpolicy.c
(454 B)
📄
printfieldhdr.c
(972 B)
📄
printfr.c
(10.73 KB)
📄
printfraginfo.c
(801 B)
📄
printhash.c
(1.04 KB)
📄
printhash_live.c
(1.4 KB)
📄
printhashdata.c
(1.93 KB)
📄
printhashnode.c
(2.32 KB)
📄
printhost.c
(553 B)
📄
printhostmap.c
(626 B)
📄
printhostmask.c
(612 B)
📄
printifname.c
(339 B)
📄
printip.c
(690 B)
📄
printipfexpr.c
(3.58 KB)
📄
printiphdr.c
(462 B)
📄
printlog.c
(650 B)
📄
printlookup.c
(700 B)
📄
printmask.c
(450 B)
📄
printnat.c
(8.69 KB)
📄
printnataddr.c
(992 B)
📄
printnatfield.c
(3.2 KB)
📄
printnatside.c
(2.51 KB)
📄
printpacket.c
(2.06 KB)
📄
printpacket6.c
(1.29 KB)
📄
printpool.c
(1.2 KB)
📄
printpool_live.c
(1.39 KB)
📄
printpooldata.c
(1.08 KB)
📄
printpoolfield.c
(3.42 KB)
📄
printpoolnode.c
(1.66 KB)
📄
printportcmp.c
(632 B)
📄
printproto.c
(750 B)
📄
printsbuf.c
(542 B)
📄
printstate.c
(5.74 KB)
📄
printstatefields.c
(5.24 KB)
📄
printtcpflags.c
(451 B)
📄
printtqtable.c
(430 B)
📄
printtunable.c
(649 B)
📄
printunit.c
(652 B)
📄
remove_hash.c
(1 KB)
📄
remove_hashnode.c
(1.11 KB)
📄
remove_pool.c
(947 B)
📄
remove_poolnode.c
(1.08 KB)
📄
resetlexer.c
(331 B)
📄
rwlock_emul.c
(3.47 KB)
📄
save_execute.c
(1.14 KB)
📄
save_file.c
(1.88 KB)
📄
save_nothing.c
(821 B)
📄
save_syslog.c
(2.2 KB)
📄
save_v1trap.c
(7.93 KB)
📄
save_v2trap.c
(7.98 KB)
📄
tcp_flags.c
(770 B)
📄
tcpflags.c
(594 B)
📄
tcpoptnames.c
(513 B)
📄
v6ionames.c
(636 B)
📄
v6optvalue.c
(577 B)
📄
var.c
(2.92 KB)
📄
verbose.c
(511 B)
📄
vtof.c
(204 B)
Editing: ipft_pc.c
/* $FreeBSD$ */ /* * Copyright (C) 2012 by Darren Reed. * * See the IPFILTER.LICENCE file for details on licencing. * * $Id$ */ #include "ipf.h" #include "ipt.h" #if !defined(lint) static const char rcsid[] = "@(#)$Id$"; #endif struct llc { int lc_type; int lc_sz; /* LLC header length */ int lc_to; /* LLC Type offset */ int lc_tl; /* LLC Type length */ }; /* * While many of these maybe the same, some do have different header formats * which make this useful. */ static struct llc llcs[] = { { 0, 0, 0, 0 }, /* DLT_NULL */ { 1, 14, 12, 2 }, /* DLT_Ethernet */ { 10, 0, 0, 0 }, /* DLT_FDDI */ { 12, 0, 0, 0 }, /* DLT_RAW */ { -1, -1, -1, -1 } }; typedef struct { u_int id; u_short major; u_short minor; u_int timezone; u_int sigfigs; u_int snaplen; u_int type; } fileheader_t; typedef struct { u_32_t seconds; u_32_t microseconds; u_32_t caplen; u_32_t wirelen; } packetheader_t; static int ipcap_open __P((char *)); static int ipcap_close __P((void)); static int ipcap_readip __P((mb_t *, char **, int *)); static int ipcap_read_rec __P((packetheader_t *)); static void iswap_hdr __P((fileheader_t *)); static int pfd = -1, swapped = 0; static struct llc *llcp = NULL; struct ipread pcap = { ipcap_open, ipcap_close, ipcap_readip, 0 }; #define SWAPLONG(y) \ ((((y)&0xff)<<24) | (((y)&0xff00)<<8) | (((y)&0xff0000)>>8) | (((y)>>24)&0xff)) #define SWAPSHORT(y) \ ( (((y)&0xff)<<8) | (((y)&0xff00)>>8) ) static void iswap_hdr(p) fileheader_t *p; { p->major = SWAPSHORT(p->major); p->minor = SWAPSHORT(p->minor); p->timezone = SWAPLONG(p->timezone); p->sigfigs = SWAPLONG(p->sigfigs); p->snaplen = SWAPLONG(p->snaplen); p->type = SWAPLONG(p->type); } static int ipcap_open(fname) char *fname; { fileheader_t ph; int fd, i; if (pfd != -1) return pfd; if (!strcmp(fname, "-")) fd = 0; else if ((fd = open(fname, O_RDONLY)) == -1) return -1; if (read(fd, (char *)&ph, sizeof(ph)) != sizeof(ph)) return -2; if (ph.id != 0xa1b2c3d4) { if (SWAPLONG(ph.id) != 0xa1b2c3d4) { (void) close(fd); return -2; } swapped = 1; iswap_hdr(&ph); } for (i = 0; llcs[i].lc_type != -1; i++) if (llcs[i].lc_type == ph.type) { llcp = llcs + i; break; } if (llcp == NULL) { (void) close(fd); return -2; } pfd = fd; printf("opened pcap file %s:\n", fname); printf("\tid: %08x version: %d.%d type: %d snap %d\n", ph.id, ph.major, ph.minor, ph.type, ph.snaplen); return fd; } static int ipcap_close() { return close(pfd); } /* * read in the header (and validate) which should be the first record * in a pcap file. */ static int ipcap_read_rec(rec) packetheader_t *rec; { int n, p, i; char *s; s = (char *)rec; n = sizeof(*rec); while (n > 0) { i = read(pfd, (char *)rec, sizeof(*rec)); if (i <= 0) return -2; s += i; n -= i; } if (swapped) { rec->caplen = SWAPLONG(rec->caplen); rec->wirelen = SWAPLONG(rec->wirelen); rec->seconds = SWAPLONG(rec->seconds); rec->microseconds = SWAPLONG(rec->microseconds); } p = rec->caplen; n = MIN(p, rec->wirelen); if (!n || n < 0) return -3; if (p < 0 || p > 65536) return -4; return p; } #ifdef notyet /* * read an entire pcap packet record. only the data part is copied into * the available buffer, with the number of bytes copied returned. */ static int ipcap_read(buf, cnt) char *buf; int cnt; { packetheader_t rec; static char *bufp = NULL; int i, n; if ((i = ipcap_read_rec(&rec)) <= 0) return i; if (!bufp) bufp = malloc(i); else bufp = realloc(bufp, i); if (read(pfd, bufp, i) != i) return -2; n = MIN(i, cnt); bcopy(bufp, buf, n); return n; } #endif /* * return only an IP packet read into buf */ static int ipcap_readip(mb, ifn, dir) mb_t *mb; char **ifn; int *dir; { static char *bufp = NULL; packetheader_t rec; struct llc *l; char *s, ty[4]; int i, j, n; char *buf; int cnt; #if 0 ifn = ifn; /* gcc -Wextra */ dir = dir; /* gcc -Wextra */ #endif buf = (char *)mb->mb_buf; cnt = sizeof(mb->mb_buf); l = llcp; /* do { */ if ((i = ipcap_read_rec(&rec)) <= 0) return i; if (!bufp) bufp = malloc(i); else bufp = realloc(bufp, i); s = bufp; for (j = i, n = 0; j > 0; ) { n = read(pfd, s, j); if (n <= 0) return -2; j -= n; s += n; } s = bufp; i -= l->lc_sz; s += l->lc_to; bcopy(s, ty, l->lc_tl); s += l->lc_tl; /* } while (ty[0] != 0x8 && ty[1] != 0); */ n = MIN(i, cnt); bcopy(s, buf, n); mb->mb_len = n; return n; }
Upload File
Create Folder