#ifndef __PPP_DOMAIN_H__
#define __PPP_DOMAIN_H__
#include <sys/sysctl.h>
#include "ppp_defs.h"
#include "if_ppplink.h"
#include "if_ppp.h"
#define PPPPROTO_CTL 1
#define PPP_NAME "PPP"
struct sockaddr_ppp {
u_int8_t ppp_len;
u_int8_t ppp_family;
u_int16_t ppp_proto;
u_int32_t ppp_cookie;
};
struct ppp_link_event_data {
u_int16_t lk_index;
u_int16_t lk_unit;
char lk_name[IFNAMSIZ];
};
#define KEV_PPP_NET_SUBCLASS 3
#define KEV_PPP_LINK_SUBCLASS 4
#ifdef KERNEL
#include <IOKit/IOLib.h>
int ppp_domain_init();
int ppp_domain_dispose();
int ppp_proto_add();
int ppp_proto_remove();
int ppp_proto_input(void *data, mbuf_t m);
void ppp_proto_free(void *data);
SYSCTL_DECL(_net_ppp);
#define LOGDBG(ifp, text) \
if (ifnet_flags(ifp) & IFF_DEBUG) { \
IOLog text; \
}
#define LOGRETURN(err, ret, text) \
if (err) { \
IOLog(text, err); \
return ret; \
}
#define LOGGOTOFAIL(err, text) \
if (err) { \
IOLog(text, err); \
goto fail; \
}
#define LOGNULLFAIL(ret, text) \
if (ret == 0) { \
IOLog(text); \
goto fail; \
}
#ifdef LOGDATA
#define LOGMBUF(text, m) { \
short i; \
char *p = mtod((m), u_char *); \
IOLog(text); \
IOLog(" : 0x "); \
for (i = 0; i < (m)->m_len; i++) \
IOLog("%x ", p[i]); \
IOLog("\n"); \
}
#else
#define LOGMBUF(text, m)
#endif
struct pppqueue {
mbuf_t head;
mbuf_t tail;
int len;
int maxlen;
int drops;
};
int ppp_qfull(struct pppqueue *pppq);
void ppp_drop(struct pppqueue *pppq);
void ppp_enqueue(struct pppqueue *pppq, mbuf_t m);
mbuf_t ppp_dequeue(struct pppqueue *pppq);
void ppp_prepend(struct pppqueue *pppq, mbuf_t m);
#endif
#endif