Esempio n. 1
0
static bool interface_handler(const char *ifname, const struct sa *addr,
			      void *arg)
{
	struct agent *ag = arg;
	int err = 0;

	/* Skip loopback and link-local addresses */
	if (ag->cli->param.skip_local) {

		if (sa_is_loopback(addr) || sa_is_linklocal(addr))
			return false;
	}

	if (str_isset(ag->cli->param.ifname) &&
	    str_casecmp(ag->cli->param.ifname, ifname)) {
		return false;
	}

	switch (sa_af(addr)) {

	case AF_INET:
		if (!ag->cli->param.use_ipv4)
			return false;
		break;

	case AF_INET6:
		if (!ag->cli->param.use_ipv6)
			return false;
		break;
	}

	/* NOTE: on some machines an interface is listed twice. */
	if (interface_find(ag, addr)) {
		re_printf("ignoring duplicated interface (%s %j)\n",
			  ifname, addr);
		return false;
	}
	ag->interfacev[ag->interfacec++] = *addr;

	re_printf("interface: %s %j\n", ifname, addr);

	if (ag->cli->param.use_udp)
		err |= add_candidate(ag, addr, IPPROTO_UDP, 0, ifname);
	if (ag->cli->param.use_tcp) {
		err |= add_candidate(ag, addr, IPPROTO_TCP, ICE_TCP_SO,
				     ifname);
		err |= add_candidate(ag, addr, IPPROTO_TCP,
			     ag->client ? ICE_TCP_ACTIVE : ICE_TCP_PASSIVE,
			     ifname);
	}

	return err != 0;
}
Esempio n. 2
0
void
AirspaceRoute::add_nearby_airspace(const RouteAirspaceIntersection &inx,
                                   const RouteLink &e)
{
  const SearchPointVector& fat = inx.first->get_clearance();
  const ClearingPair p = get_pairs(fat, e.first, e.second);
  const ClearingPair pb = get_backup_pairs(fat, e.first, inx.second);

  // process all options
  add_candidate(RouteLinkBase(e.first, p.first));
  add_candidate(RouteLinkBase(e.first, p.second));
  add_candidate(RouteLinkBase(e.first, pb.first));
  add_candidate(RouteLinkBase(e.first, pb.second));
}
Esempio n. 3
0
bool
AirspaceRoute::check_secondary(const RouteLink &e)
{
  if (!rpolars_route.airspace_enabled())
    return true; // trivial

  m_inx = first_intersecting(e);
  if (m_inx.first!=NULL)  {
    add_candidate(e);
    return false;
  };
  return true;
}
Esempio n. 4
0
/* DDS3.2.20: Add Preference */	
void add_preference(void)
{
	struct cursor cursor;
	/* SIPL 2011-06-28 No longer needed because of new translate
	   function.
	const struct ballot_contents *ballot;
	unsigned int num_candidates; */
	unsigned int dbci;
	const struct rotation *rotation;
	bool candidate_found;

	rotation = get_current_rotation();

	cursor = get_cursor_position();
	
	/* If cursor is on a group heading, then ignore selection */
	if (cursor.screen_candidate_index >= 0) {
	/* SIPL 2011-06-28 No longer needed because of new translate
	   function.
		ballot = get_ballot_contents();
	
		num_candidates = ballot->num_candidates[cursor.group_index];
	*/
		
		/* SIPL 2011-06-28 Use updated translate function. */
		dbci = translate_group_sci_to_dbci(cursor.group_index,
				     cursor.screen_candidate_index, 
				     rotation);
		/* Check if this candidate has already been added to the 
		   Vote in Progress */
		candidate_found = search_vip(cursor.group_index, dbci);
		
		if (!candidate_found) {
			add_candidate(cursor.group_index, dbci);
			/* Interrupt audio */
			draw_group_entry(cursor, YES, true);
		}
	}
}