[DAPL2] sync with WinOF 2.1 branch
[mirror/winof/.git] / inc / complib / cl_nodenamemap.h
1 /*\r
2  * Copyright (c) 2008 Voltaire, Inc. All rights reserved.\r
3  * Copyright (c) 2007 Lawrence Livermore National Lab\r
4  *\r
5  * This software is available to you under a choice of one of two\r
6  * licenses.  You may choose to be licensed under the terms of the GNU\r
7  * General Public License (GPL) Version 2, available from the file\r
8  * COPYING in the main directory of this source tree, or the\r
9  * OpenIB.org BSD license below:\r
10  *\r
11  *     Redistribution and use in source and binary forms, with or\r
12  *     without modification, are permitted provided that the following\r
13  *     conditions are met:\r
14  *\r
15  *      - Redistributions of source code must retain the above\r
16  *        copyright notice, this list of conditions and the following\r
17  *        disclaimer.\r
18  *\r
19  *      - Redistributions in binary form must reproduce the above\r
20  *        copyright notice, this list of conditions and the following\r
21  *        disclaimer in the documentation and/or other materials\r
22  *        provided with the distribution.\r
23  *\r
24  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
25  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
26  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
27  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
28  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
29  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
30  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
31  * SOFTWARE.\r
32  *\r
33  */\r
34 \r
35 #ifndef _CL_NODE_NAME_MAP_H_\r
36 #define _CL_NODE_NAME_MAP_H_\r
37 \r
38 #ifdef __cplusplus\r
39 extern "C"\r
40 {\r
41 #endif\r
42 \r
43 #include <stdio.h>\r
44 #include <complib/cl_qmap.h>\r
45 \r
46 /* NOTE: this may modify the parameter "nodedesc". */\r
47 CL_EXPORT char *clean_nodedesc(char *nodedesc);\r
48 \r
49 typedef struct _name_map_item {\r
50         cl_map_item_t item;\r
51         uint64_t guid;\r
52         char *name;\r
53 } name_map_item_t;\r
54 \r
55 typedef cl_qmap_t nn_map_t;\r
56 \r
57 /**\r
58  * Node name map interface.\r
59  * It is OK to pass NULL for the node_name_map[_fp] parameters.\r
60  */\r
61 CL_EXPORT nn_map_t * CL_API open_node_name_map(char *node_name_map);\r
62 CL_EXPORT void  CL_API close_node_name_map(nn_map_t *map);\r
63 CL_EXPORT char * CL_API remap_node_name(nn_map_t *map, uint64_t target_guid,\r
64                         char *nodedesc);\r
65         /* NOTE: parameter "nodedesc" may be modified here. */\r
66 CL_EXPORT int CL_API parse_node_map(const char *file_name,\r
67                    int (*create)(void *, uint64_t, char *), void *cxt);\r
68 \r
69 #ifdef __cplusplus\r
70 }       /* extern "C" */\r
71 #endif\r
72 \r
73 #endif                          /* _CL_NODE_NAME_MAP_H_ */\r