mfc
} mfc[256 / 5];
howmany(sizeof mfc, sizeof mfc[0]))
mfc[i].common =
mfc[i].addr =
mfc[i].common ? "common" :
"attr", mfc[i].addr));
SYS_RES_MEMORY, rid, mfc[mfc_index].common
tuple.mult = mfc[mfc_index].common ? 1 : 2;
tuple.ptr = mfc[mfc_index].addr;
struct mfc *rt;
struct mfc **nptr;
struct mfc *rt;
struct mfc *mfc, **nptr;
for (mfc = *nptr; mfc != NULL; mfc = *nptr) {
if (mfc->mfc_stall != NULL && mfc->mfc_expire != 0 &&
--mfc->mfc_expire == 0) {
(u_long)ntohl(mfc->mfc_origin.s_addr),
(u_long)ntohl(mfc->mfc_mcastgrp.s_addr));
for (rte = mfc->mfc_stall; rte; ) {
while (mfc->mfc_bw_meter != NULL) {
struct bw_meter *x = mfc->mfc_bw_meter;
mfc->mfc_bw_meter = x->bm_mfc_next;
*nptr = mfc->mfc_next;
kfree(mfc, M_MRTABLE);
nptr = &mfc->mfc_next;
ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif)
struct mfc *mfc;
mfc = mfc_find(req->bu_src.s_addr, req->bu_dst.s_addr);
if (mfc == NULL) {
for (x = mfc->mfc_bw_meter; x != NULL; x = x->bm_mfc_next) {
x->bm_mfc = mfc;
x->bm_mfc_next = mfc->mfc_bw_meter;
mfc->mfc_bw_meter = x;
struct mfc *mfc;
mfc = mfc_find(req->bu_src.s_addr, req->bu_dst.s_addr);
if (mfc == NULL) {
list = mfc->mfc_bw_meter;
mfc->mfc_bw_meter = NULL;
for (prev = NULL, x = mfc->mfc_bw_meter; x != NULL;
static int ip_mdq(struct mbuf *, struct ifnet *, struct mfc *, vifi_t);
struct mbuf *m, struct mfc *rt)
struct mbuf *, struct mfc *);
struct mbuf *, struct mfc *);
struct mbuf *, struct mfc *);
struct mbuf *mb_copy, struct mfc *rt)
struct mbuf *mb_copy, struct mfc *rt)
static struct mfc *
struct mfc *rt;
struct mfcctl2 mfc;
error = soopt_to_kbuf(sopt, &mfc, sizeof(struct mfcctl2),
error = soopt_to_kbuf(sopt, &mfc, sizeof(struct mfcctl),
bzero((caddr_t)&mfc + sizeof(struct mfcctl),
sizeof(mfc) - sizeof(struct mfcctl));
error = add_mfc(&mfc);
error = del_mfc(&mfc);
struct mfc *rt;
struct mfc *rt;
struct mfc *nr = rt->mfc_next;
static struct mfc *mfctable[MFCTBLSIZ];
update_mfc_params(struct mfc *rt, struct mfcctl2 *mfccp)
init_mfc_params(struct mfc *rt, struct mfcctl2 *mfccp)
struct mfc *rt;
struct mfc *mfc_next; /* next mfc entry */
struct mfc *bm_mfc; /* the corresponding mfc */
struct mf6c *mfc, **nptr;
while ((mfc = *nptr) != NULL) {
rte = mfc->mf6c_stall;
mfc->mf6c_expire != 0 &&
--mfc->mf6c_expire == 0) {
ip6_sprintf(&mfc->mf6c_origin.sin6_addr),
ip6_sprintf(&mfc->mf6c_mcastgrp.sin6_addr));
*nptr = mfc->mf6c_next;
kfree(mfc, M_MRTABLE);
nptr = &mfc->mf6c_next;
kread((u_long)m, (char *)&mfc, sizeof mfc);
printf(" %-15.15s", routename(mfc.mfc_origin.s_addr));
printf(" %-15.15s", routename(mfc.mfc_mcastgrp.s_addr));
printf(" %9lu", mfc.mfc_pkt_cnt);
printf(" %3d ", mfc.mfc_parent);
if (mfc.mfc_ttls[vifi] > 0)
mfc.mfc_ttls[vifi]);
bwm = mfc.mfc_bw_meter;
m = mfc.mfc_next;
struct mfc *mfctable[MFCTBLSIZ];
struct mfc mfc, *m;
kread((u_long)mfcp, (char *)&mfc, sizeof(mfc));
routename6(&mfc.mf6c_origin));
routename6(&mfc.mf6c_mcastgrp));
printf(" %9llu", (unsigned long long)mfc.mf6c_pkt_cnt);
for (waitings = 0, rtep = mfc.mf6c_stall; rtep; ) {
if (mfc.mf6c_parent == MF6C_INCOMPLETE_PARENT)
printf(" %3d ", mfc.mf6c_parent);
if (IF_ISSET(mifi, &mfc.mf6c_ifset))
mfcp = mfc.mf6c_next;
struct mf6c mfc;