コード例 #1
0
ファイル: chassis.c プロジェクト: Cai900205/test
static uint64_t xsigo_chassisguid(ibnd_node_t * node)
{
	uint64_t sysimgguid =
	    mad_get_field64(node->info, 0, IB_NODE_SYSTEM_GUID_F);
	uint64_t remote_sysimgguid;

	if (!is_xsigo_ca(sysimgguid)) {
		/* Byte 3 is NodeType and byte 4 is PortType */
		/* If NodeType is 1 (switch), PortType is masked */
		if (is_xsigo_switch(sysimgguid))
			return sysimgguid & 0xffffffff00ffffffULL;
		else
			return sysimgguid;
	} else {
		if (!node->ports || !node->ports[1])
			return 0;

		/* Is there a peer port ? */
		if (!node->ports[1]->remoteport)
			return sysimgguid;

		/* If peer port is Leaf 1, use its chassis GUID */
		remote_sysimgguid =
		    mad_get_field64(node->ports[1]->remoteport->node->info, 0,
				    IB_NODE_SYSTEM_GUID_F);
		if (is_xsigo_leafone(remote_sysimgguid))
			return remote_sysimgguid & 0xffffffff00ffffffULL;
		else
			return sysimgguid;
	}
}
コード例 #2
0
ファイル: grouping.c プロジェクト: 2014-class/freerouter
static uint64_t xsigo_chassisguid(Node *node)
{
	if (!is_xsigo_ca(node->sysimgguid)) {
		/* Byte 3 is NodeType and byte 4 is PortType */
		/* If NodeType is 1 (switch), PortType is masked */
		if (is_xsigo_switch(node->sysimgguid))
			return node->sysimgguid & 0xffffffff00ffffffULL;
		else
			return node->sysimgguid;
	} else {
		/* Is there a peer port ? */
		if (!node->ports->remoteport)
			return node->sysimgguid;

		/* If peer port is Leaf 1, use its chassis GUID */
		if (is_xsigo_leafone(node->ports->remoteport->node->sysimgguid))
			return node->ports->remoteport->node->sysimgguid &
			       0xffffffff00ffffffULL;
		else
			return node->sysimgguid;
	}
}