root/opal/mca/if/base/if_base_components.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. opal_if_base_register
  2. opal_if_base_open
  3. opal_if_base_close
  4. opal_if_construct

   1 /*
   2  * Copyright (c) 2010-2013 Cisco Systems, Inc.  All rights reserved.
   3  * Copyright (c) 2015      Intel, Inc. All rights reserved.
   4  * Copyright (c) 2015-2016 Research Organization for Information Science
   5  *                         and Technology (RIST). All rights reserved.
   6  * $COPYRIGHT$
   7  *
   8  * Additional copyrights may follow
   9  *
  10  * $HEADER$
  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 /* instantiate the global list of interfaces */
  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 /* instance the opal_if_t object */
  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     /* setup the global list */
  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 }

/* [<][>][^][v][top][bottom][index][help] */