Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #3
0
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
}
Exemple #4
0
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!");
}
Exemple #7
0
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);
}
Exemple #8
0
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);
}
Exemple #9
0
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);
}
Exemple #10
0
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);
}