31#define ACCEPT_FILTER_MOD
34#include <sys/kernel.h>
36#include <sys/module.h>
37#include <sys/signalvar.h>
38#include <sys/sysctl.h>
39#include <sys/socketvar.h>
42static int sohasdns(
struct socket *so,
void *arg,
int waitflag);
62sohasdns(
struct socket *so,
void *arg,
int waitflag)
64 struct sockbuf *sb = &so->so_rcv;
67 if (sbused(sb) >= sb->sb_hiwat || sb->sb_mbcnt >= sb->sb_mbmax)
75 return (SU_ISCONNECTED);
78#define GET8(p, val) do { \
79 if (p->offset < p->moff) \
81 while (p->offset >= p->moff + p->m->m_len) { \
82 p->moff += p->m->m_len; \
83 p->m = p->m->m_next; \
86 p->n = p->m->m_nextpkt; \
91 val = *(mtod(p->m, unsigned char *) + (p->offset - p->moff)); \
95#define GET16(p, val) do { \
96 unsigned int v0, v1; \
99 val = v0 * 0x100 + v1; \
104 unsigned long packlen;
111 q.
n = q.
m->m_nextpkt;
117 if (packlen + 2 > q.
len)
ACCEPT_FILTER_DEFINE(accf_dns, "dnsready", sohasdns, NULL, NULL, 1)
static int skippacket(struct sockbuf *sb)
static int sohasdns(struct socket *so, void *arg, int waitflag)