static void setmedia(const char *val, int d, int s, const struct afswtch *afp) { struct ifmediareq *ifmr; int subtype; ifmr = ifmedia_getstate(s); /* * We are primarily concerned with the top-level type. * However, "current" may be only IFM_NONE, so we just look * for the top-level type in the first "supported type" * entry. * * (I'm assuming that all supported media types for a given * interface will be the same top-level type..) */ subtype = get_media_subtype(IFM_TYPE(ifmr->ifm_ulist[0]), val); strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); ifr.ifr_media = (ifmr->ifm_current & IFM_IMASK) | IFM_TYPE(ifmr->ifm_ulist[0]) | subtype; ifmr->ifm_current = ifr.ifr_media; callback_register(setifmediacallback, (void *)ifmr); }
static __constructor void vlan_ctor(void) { size_t i; for (i = 0; i < nitems(vlan_cmds); i++) cmd_register(&vlan_cmds[i]); af_register(&af_vlan); callback_register(vlan_cb, NULL); clone_setdefcallback("vlan", vlan_create); }
static __constructor(101) void vlan_ctor(void) { #define N(a) (sizeof(a) / sizeof(a[0])) int i; for (i = 0; i < N(vlan_cmds); i++) cmd_register(&vlan_cmds[i]); af_register(&af_vlan); callback_register(vlan_cb, NULL); #undef N }
static __constructor void vxlan_ctor(void) { #define N(a) (sizeof(a) / sizeof(a[0])) size_t i; for (i = 0; i < N(vxlan_cmds); i++) cmd_register(&vxlan_cmds[i]); af_register(&af_vxlan); callback_register(vxlan_cb, NULL); clone_setdefcallback("vxlan", vxlan_create); #undef N }
/* Generic "growing-wall" special (trigger) */ void special_growing_wall(game_t *p_game, uint8_t special) { special_t *p_spec = &p_game->p_cur_level->p_specials[special]; growing_wall_priv_t *p_priv = (growing_wall_priv_t*)p_spec->p_priv; if (p_spec->triggered) return; p_spec->triggered = TRUE; /* Register the callback */ if ( (p_priv->id = callback_register(p_game, growing_wall_callback, (void*)p_priv)) < 0) debug_msg("Could not register callback!\n"); status_enqueue_message(p_game, "YOU HEAR A ROARING"); }
/* "Elem generator" special */ void special_elem_generator(game_t *p_game, uint8_t special) { special_t *p_spec = &p_game->p_cur_level->p_specials[special]; elem_generator_priv_t *p_priv = (elem_generator_priv_t*)p_spec->p_priv; if (p_spec->triggered) return; p_spec->triggered = TRUE; /* Register the callback */ if ( (p_priv->id = callback_register(p_game, elem_generator_callback, (void*)p_priv)) < 0) debug_msg("Could not register callback!\n"); status_enqueue_message(p_game, "A STRANGE SOUND IS HEARD!"); }
static void setmediamode(const char *val, int d, int s, const struct afswtch *afp) { struct ifmediareq *ifmr; int mode; ifmr = ifmedia_getstate(s); mode = get_media_mode(IFM_TYPE(ifmr->ifm_ulist[0]), val); strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); ifr.ifr_media = (ifmr->ifm_current & ~IFM_MMASK) | mode; ifmr->ifm_current = ifr.ifr_media; callback_register(setifmediacallback, (void *)ifmr); }
static void setmediainst(const char *val, int d, int s, const struct afswtch *afp) { struct ifmediareq *ifmr; int inst; ifmr = ifmedia_getstate(s); inst = atoi(val); if (inst < 0 || inst > (int)IFM_INST_MAX) errx(1, "invalid media instance: %s", val); strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); ifr.ifr_media = (ifmr->ifm_current & ~IFM_IMASK) | inst << IFM_ISHIFT; ifmr->ifm_current = ifr.ifr_media; callback_register(setifmediacallback, (void *)ifmr); }
static void domediaopt(const char *val, int clear, int s) { struct ifmediareq *ifmr; int options; ifmr = ifmedia_getstate(s); options = get_media_options(IFM_TYPE(ifmr->ifm_ulist[0]), val); strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); ifr.ifr_media = ifmr->ifm_current; if (clear) ifr.ifr_media &= ~options; else ifr.ifr_media |= options; ifmr->ifm_current = ifr.ifr_media; callback_register(setifmediacallback, (void *)ifmr); }
static void setcarp_vhid(const char *val, int d, int s, const struct afswtch *afp) { carpr_vhid = atoi(val); if (carpr_vhid <= 0 || carpr_vhid > CARP_MAXVHID) errx(1, "vhid must be greater than 0 and less than %u", CARP_MAXVHID); switch (afp->af_af) { #ifdef INET case AF_INET: { struct in_aliasreq *ifra; ifra = (struct in_aliasreq *)afp->af_addreq; ifra->ifra_vhid = carpr_vhid; break; } #endif #ifdef INET6 case AF_INET6: { struct in6_aliasreq *ifra; ifra = (struct in6_aliasreq *)afp->af_addreq; ifra->ifra_vhid = carpr_vhid; break; } #endif default: errx(1, "%s doesn't support carp(4)", afp->af_name); } callback_register(setcarp_callback, NULL); }