This source file includes following definitions.
- pmix_pif_base_register
- pmix_pif_base_open
- pmix_pif_base_close
- pmix_pif_construct
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "pmix_config.h"
15
16 #include "pmix_common.h"
17 #include "src/util/output.h"
18 #include "src/mca/mca.h"
19 #include "src/mca/pif/pif.h"
20 #include "src/mca/pif/base/base.h"
21 #include "src/mca/pif/base/static-components.h"
22
23
24 pmix_list_t pmix_if_list = {{0}};
25 bool pmix_if_do_not_resolve = false;
26 bool pmix_if_retain_loopback = false;
27
28 static int pmix_pif_base_register (pmix_mca_base_register_flag_t flags);
29 static int pmix_pif_base_open (pmix_mca_base_open_flag_t flags);
30 static int pmix_pif_base_close(void);
31 static void pmix_pif_construct(pmix_pif_t *obj);
32
33 static bool frameopen = false;
34
35
36 PMIX_CLASS_INSTANCE(pmix_pif_t, pmix_list_item_t, pmix_pif_construct, NULL);
37
38 PMIX_MCA_BASE_FRAMEWORK_DECLARE(pmix, pif, NULL, pmix_pif_base_register, pmix_pif_base_open, pmix_pif_base_close,
39 mca_pif_base_static_components, 0);
40
41 static int pmix_pif_base_register (pmix_mca_base_register_flag_t flags)
42 {
43 pmix_if_do_not_resolve = false;
44 (void) pmix_mca_base_framework_var_register (&pmix_pif_base_framework, "do_not_resolve",
45 "If nonzero, do not attempt to resolve interfaces",
46 PMIX_MCA_BASE_VAR_TYPE_BOOL, NULL, 0, PMIX_MCA_BASE_VAR_FLAG_SETTABLE,
47 PMIX_INFO_LVL_9, PMIX_MCA_BASE_VAR_SCOPE_ALL_EQ,
48 &pmix_if_do_not_resolve);
49
50 pmix_if_retain_loopback = false;
51 (void) pmix_mca_base_framework_var_register (&pmix_pif_base_framework, "retain_loopback",
52 "If nonzero, retain loopback interfaces",
53 PMIX_MCA_BASE_VAR_TYPE_BOOL, NULL, 0, PMIX_MCA_BASE_VAR_FLAG_SETTABLE,
54 PMIX_INFO_LVL_9, PMIX_MCA_BASE_VAR_SCOPE_ALL_EQ,
55 &pmix_if_retain_loopback);
56
57 return PMIX_SUCCESS;
58 }
59
60
61 static int pmix_pif_base_open (pmix_mca_base_open_flag_t flags)
62 {
63 if (frameopen) {
64 return PMIX_SUCCESS;
65 }
66 frameopen = true;
67
68
69 PMIX_CONSTRUCT(&pmix_if_list, pmix_list_t);
70
71 return pmix_mca_base_framework_components_open(&pmix_pif_base_framework, flags);
72 }
73
74
75 static int pmix_pif_base_close(void)
76 {
77 pmix_list_item_t *item;
78
79 if (!frameopen) {
80 return PMIX_SUCCESS;
81 }
82 frameopen = false;
83
84 while (NULL != (item = pmix_list_remove_first(&pmix_if_list))) {
85 PMIX_RELEASE(item);
86 }
87 PMIX_DESTRUCT(&pmix_if_list);
88
89 return pmix_mca_base_framework_components_close(&pmix_pif_base_framework, NULL);
90 }
91
92 static void pmix_pif_construct(pmix_pif_t *obj)
93 {
94 memset(obj->if_name, 0, sizeof(obj->if_name));
95 obj->if_index = -1;
96 obj->if_kernel_index = (uint16_t) -1;
97 obj->af_family = PF_UNSPEC;
98 obj->if_flags = 0;
99 obj->if_speed = 0;
100 memset(&obj->if_addr, 0, sizeof(obj->if_addr));
101 obj->if_mask = 0;
102 obj->if_bandwidth = 0;
103 memset(obj->if_mac, 0, sizeof(obj->if_mac));
104 obj->ifmtu = 0;
105 }