Exemplo n.º 1
0
bool pim_groupconf_node::rp_for_group(const in6_addr &grpaddr, in6_addr &rpaddr,
				      rp_source &src) const {
	bool R_bit = grpaddr.s6_addr[1] & 0x40;
	bool P_bit = grpaddr.s6_addr[1] & 0x20;
	bool T_bit = grpaddr.s6_addr[1] & 0x10;

	if (P_bit && T_bit && R_bit) {
		/* Embedded-RP address */
		inet6_addr tmp;
		pim_group_node::calculate_embedded_rp_addr(grpaddr, tmp);
		rpaddr = tmp;
		src = rps_embedded;
		return true;
	}

	rpaddr = get_property_address("rp");
	if (!IN6_IS_ADDR_UNSPECIFIED(&rpaddr)) {
		src = rps_static;
		return true;
	}

#ifndef PIM_NO_BSR
	rpaddr = pim->bsr().rp_from_rpset(grpaddr);
	if (!IN6_IS_ADDR_UNSPECIFIED(&rpaddr)) {
		src = rps_rp_set;
		return true;
	}
#endif

	return false;
}
Exemplo n.º 2
0
static void debug_print_object(int number) {
	int i;
	zword_t addr, len;
	
    glk_printf("Object %d:\nName: \"", number);
    print_object_name(number);
    glk_put_string("\"\nAttributes: ");
	for (i = 0; i < (zGameVersion < Z_VERSION_4 ? 32 : 48); i++) {
		if (get_attribute(number, i))
			glk_printf("%d ", i);
	} 
    glk_printf("\nParent: %3d \"", object_parent(number));
    print_object_name(object_parent(number));
    glk_printf("\"\nSibling: %3d \"", object_sibling(number));
    print_object_name(object_sibling(number));
    glk_printf("\"\nChild: %3d \"", object_child(number));
    print_object_name(object_child(number));
    glk_put_string("\"\nProperties:\n");
	i = 0;
	while (i = get_next_property(number, i)) {
		glk_printf("    [%2d] ", i);
		addr = get_property_address(number, i);
		for (len = get_property_length(addr); len > 0; len--)
			glk_printf("%02x ", get_byte(addr++));
		glk_put_string("\n");
	}
}