mfc
update_mfc_params(struct mfctable *mfct, struct mfc *rt, struct mfcctl2 *mfccp)
init_mfc_params(struct mfctable *mfct, struct mfc *rt, struct mfcctl2 *mfccp)
expire_mfc(struct mfc *rt)
struct mfc *rt;
struct mfc *rt;
struct mfc *rt;
struct mfc *rt, *nrt;
ip_mdq(struct mfctable *mfct, struct mbuf *m, struct ifnet *ifp, struct mfc *rt,
LIST_HEAD(mfchashhdr, mfc) *mfchashtbl;
struct mfc *mfc;
mfc = mfc_find(mfct, &req->bu_src, &req->bu_dst);
if (mfc == NULL) {
bwm_ptr = &mfc->mfc_bw_meter_geq;
bwm_ptr = &mfc->mfc_bw_meter_leq;
x->bm_mfc = mfc;
struct mfc *mfc;
mfc = mfc_find(mfct, &req->bu_src, &req->bu_dst);
if (mfc == NULL) {
list = mfc->mfc_bw_meter_leq;
mfc->mfc_bw_meter_leq = NULL;
list = mfc->mfc_bw_meter_geq;
mfc->mfc_bw_meter_geq = NULL;
bwm_ptr = &mfc->mfc_bw_meter_geq;
bwm_ptr = &mfc->mfc_bw_meter_leq;
struct mbuf *m, struct mfc *rt)
struct mbuf *mb_copy, struct mfc *rt)
struct mbuf *mb_copy, struct mfc *rt)
struct mfc *rt;
error = SYSCTL_OUT(req, rt, sizeof(struct mfc));
static void expire_mfc(struct mfc *);
struct mfc *, vifi_t);
static __inline struct mfc *
struct mbuf *, struct mfc *);
struct vif *, struct mbuf *, struct mfc *);
struct vif *, struct mbuf *, struct mfc *);
static struct mfc *
struct mfc *rt;
static __inline struct mfc *
struct mfc *rt;
struct mfcctl2 mfc;
error = sooptcopyin(sopt, &mfc, sizeof(struct mfcctl2),
error = sooptcopyin(sopt, &mfc, sizeof(struct mfcctl),
bzero((caddr_t)&mfc + sizeof(struct mfcctl),
sizeof(mfc) - sizeof(struct mfcctl));
error = add_mfc(mfct, &mfc);
error = del_mfc(mfct, &mfc);
struct mfc *rt;
struct mfc *rt, *nrt;
struct mfc *rt, *nrt;
LIST_ENTRY(mfc) mfc_hash;
struct mfc *bm_mfc; /* the corresponding mfc */
struct mfc;
struct mf6c *mfc, **nptr;
while ((mfc = *nptr) != NULL) {
rte = mfc->mf6c_stall;
mfc->mf6c_expire != 0 &&
--mfc->mf6c_expire == 0) {
ip6_sprintf(ip6bufo, &mfc->mf6c_origin.sin6_addr),
ip6_sprintf(ip6bufg, &mfc->mf6c_mcastgrp.sin6_addr));
*nptr = mfc->mf6c_next;
free(mfc, M_MRTABLE6);
nptr = &mfc->mf6c_next;
expire_mf6c(struct mf6c *mfc)
while ((rte = mfc->mf6c_stall) != NULL) {
mfc->mf6c_stall = rte->next;
free(mfc, M_MRTABLE6);
struct mf6c *mfc, **nmfc;
while ((mfc = *nmfc) != NULL) {
if (mfc->mf6c_parent == mifi) {
*nmfc = mfc->mf6c_next;
if (mfc->mf6c_expire)
expire_mf6c(mfc);
if (IF_ISSET(mifi, &mfc->mf6c_ifset))
IF_CLR(mifi, &mfc->mf6c_ifset);
nmfc = &mfc->mf6c_next;
print_mfc(struct mfc *m, int maxvif, int *banner_printed)
struct mfc *m;
struct mfc *mfctable;
LIST_HEAD(, mfc) *mfchashtbl;
struct mfc mfc;
kread((u_long)m, (char *)&mfc, sizeof(mfc));
static void print_mfc(struct mfc *, int, int *);
struct mf6c mfc;
kread((u_long)mfcp, (char *)&mfc, sizeof(mfc));
routename(sin6tosa(&mfc.mf6c_origin),
routename(sin6tosa(&mfc.mf6c_mcastgrp),
(uintmax_t)mfc.mf6c_pkt_cnt);
for (waitings = 0, rtep = mfc.mf6c_stall; rtep; ) {
if (mfc.mf6c_parent == MF6C_INCOMPLETE_PARENT)
xo_emit(" {:parent/%3d} ", mfc.mf6c_parent);
if (IF_ISSET(mifi, &mfc.mf6c_ifset))
mfcp = mfc.mf6c_next;