This source file includes following definitions.
- opal_if_base_register
- opal_if_base_open
- opal_if_base_close
- opal_if_construct
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "opal_config.h"
15
16 #include "opal/constants.h"
17 #include "opal/util/output.h"
18 #include "opal/mca/mca.h"
19 #include "opal/mca/if/if.h"
20 #include "opal/mca/if/base/base.h"
21 #include "opal/mca/if/base/static-components.h"
22
23
24 opal_list_t opal_if_list = {{0}};
25 bool opal_if_do_not_resolve = false;
26 bool opal_if_retain_loopback = false;
27
28 static int opal_if_base_register (mca_base_register_flag_t flags);
29 static int opal_if_base_open (mca_base_open_flag_t flags);
30 static int opal_if_base_close(void);
31 static void opal_if_construct(opal_if_t *obj);
32
33 static bool frameopen = false;
34
35
36 OBJ_CLASS_INSTANCE(opal_if_t, opal_list_item_t, opal_if_construct, NULL);
37
38 MCA_BASE_FRAMEWORK_DECLARE(opal, if, NULL, opal_if_base_register, opal_if_base_open, opal_if_base_close,
39 mca_if_base_static_components, 0);
40
41 static int opal_if_base_register (mca_base_register_flag_t flags)
42 {
43 opal_if_do_not_resolve = false;
44 (void) mca_base_framework_var_register (&opal_if_base_framework, "do_not_resolve",
45 "If nonzero, do not attempt to resolve interfaces",
46 MCA_BASE_VAR_TYPE_BOOL, NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE,
47 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_ALL_EQ,
48 &opal_if_do_not_resolve);
49
50 opal_if_retain_loopback = false;
51 (void) mca_base_framework_var_register (&opal_if_base_framework, "retain_loopback",
52 "If nonzero, retain loopback interfaces",
53 MCA_BASE_VAR_TYPE_BOOL, NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE,
54 OPAL_INFO_LVL_9, MCA_BASE_VAR_SCOPE_ALL_EQ,
55 &opal_if_retain_loopback);
56
57 return OPAL_SUCCESS;
58 }
59
60
61 static int opal_if_base_open (mca_base_open_flag_t flags)
62 {
63 if (frameopen) {
64 return OPAL_SUCCESS;
65 }
66 frameopen = true;
67
68
69 OBJ_CONSTRUCT(&opal_if_list, opal_list_t);
70
71 return mca_base_framework_components_open(&opal_if_base_framework, flags);
72 }
73
74
75 static int opal_if_base_close(void)
76 {
77 opal_list_item_t *item;
78
79 if (!frameopen) {
80 return OPAL_SUCCESS;
81 }
82 frameopen = false;
83
84 while (NULL != (item = opal_list_remove_first(&opal_if_list))) {
85 OBJ_RELEASE(item);
86 }
87 OBJ_DESTRUCT(&opal_if_list);
88
89 return mca_base_framework_components_close(&opal_if_base_framework, NULL);
90 }
91
92 static void opal_if_construct(opal_if_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 }