diff options
author | dimitri staessens <[email protected]> | 2016-06-24 18:57:34 +0200 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2016-06-24 18:57:34 +0200 |
commit | 76eff8e31eb1e6a6b65284ec4d33cfa088008c3d (patch) | |
tree | bbb7186d986f9555e457768504f9ad0ad7cbbaad | |
parent | 0abbbd9fb6499d02d04a5007e803eb79306c341b (diff) | |
parent | 4b5eaafdc9b61307a6a4074366372df3c170372e (diff) | |
download | ouroboros-76eff8e31eb1e6a6b65284ec4d33cfa088008c3d.tar.gz ouroboros-76eff8e31eb1e6a6b65284ec4d33cfa088008c3d.zip |
Merge branch 'be' of bitbucket.org:ouroboros-rina/ouroboros into be-irmd-registry
-rw-r--r-- | include/ouroboros/CMakeLists.txt | 4 | ||||
-rw-r--r-- | include/ouroboros/common.h | 6 | ||||
-rw-r--r-- | include/ouroboros/dev.h | 1 | ||||
-rw-r--r-- | include/ouroboros/errno.h (renamed from src/lib/da.c) | 19 | ||||
-rw-r--r-- | include/ouroboros/flow.h | 6 | ||||
-rw-r--r-- | include/ouroboros/ipcp.h | 2 | ||||
-rw-r--r-- | include/ouroboros/irm.h | 2 | ||||
-rw-r--r-- | include/ouroboros/nsm.h (renamed from src/ipcpd/flow.c) | 49 | ||||
-rw-r--r-- | src/ipcpd/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/ipcpd/flow.h | 9 | ||||
-rw-r--r-- | src/ipcpd/ipcp-ops.h | 2 | ||||
-rw-r--r-- | src/ipcpd/ipcp.c | 2 | ||||
-rw-r--r-- | src/ipcpd/local/main.c | 2 | ||||
-rw-r--r-- | src/irmd/main.c | 16 | ||||
-rw-r--r-- | src/lib/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/lib/dev.c | 66 | ||||
-rw-r--r-- | src/lib/instance_name.c | 4 | ||||
-rw-r--r-- | src/lib/ipcp.c | 13 | ||||
-rw-r--r-- | src/lib/ipcpd_messages.proto | 2 | ||||
-rw-r--r-- | src/lib/irm.c | 5 | ||||
-rw-r--r-- | src/lib/nsm.c (renamed from include/ouroboros/da.h) | 34 |
21 files changed, 127 insertions, 120 deletions
diff --git a/include/ouroboros/CMakeLists.txt b/include/ouroboros/CMakeLists.txt index 8347f928..c5f65d49 100644 --- a/include/ouroboros/CMakeLists.txt +++ b/include/ouroboros/CMakeLists.txt @@ -4,14 +4,14 @@ configure_file( set(HEADER_FILES cdap.h - da.h dev.h dif_config.h + errno.h flow.h instance_name.h irm.h + nsm.h qos.h - time_utils.h ) install(FILES ${HEADER_FILES} DESTINATION usr/include/ouroboros) diff --git a/include/ouroboros/common.h b/include/ouroboros/common.h index f2c8a9ec..039e1a83 100644 --- a/include/ouroboros/common.h +++ b/include/ouroboros/common.h @@ -39,4 +39,10 @@ enum qos_cube { QOS_CUBE_VIDEO }; +enum flow_state { + FLOW_NULL = 0, + FLOW_PENDING, + FLOW_ALLOCATED +}; + #endif /* OUROBOROS_COMMON_H */ diff --git a/include/ouroboros/dev.h b/include/ouroboros/dev.h index ee253ff8..897bc124 100644 --- a/include/ouroboros/dev.h +++ b/include/ouroboros/dev.h @@ -29,7 +29,6 @@ #ifndef OUROBOROS_DEV_H #define OUROBOROS_DEV_H -#define UNKNOWN_AP "__UNKNOWN_AP__" #define UNKNOWN_AE "__UNKNOWN_AE__" /* These calls should be removed once we write the ouroboros OS. */ diff --git a/src/lib/da.c b/include/ouroboros/errno.h index 8e7756d1..62629134 100644 --- a/src/lib/da.c +++ b/include/ouroboros/errno.h @@ -1,7 +1,7 @@ /* * Ouroboros - Copyright (C) 2016 * - * The API to instruct the DIF Allocator + * Ouroboros specific error numbers * * Sander Vrijders <[email protected]> * @@ -20,15 +20,12 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include <ouroboros/da.h> +#ifndef OUROBOROS_ERRNO_H +#define OUROBOROS_ERRNO_H -char * da_resolve_daf(char * daf_name) -{ - return NULL; -} +#include <errno.h> -ssize_t da_resolve_dap(char * name, - char ** n_1_difs) -{ - return 0; -} +#define ENOTALLOC 1000 /* Flow is not allocated */ +#define EIPCPTYPE 1001 /* Unknown IPCP type */ + +#endif diff --git a/include/ouroboros/flow.h b/include/ouroboros/flow.h index aa377034..754c7632 100644 --- a/include/ouroboros/flow.h +++ b/include/ouroboros/flow.h @@ -37,10 +37,4 @@ #define FLOW_F_GETFL 00000001 #define FLOW_F_SETFL 00000002 -enum flow_state { - FLOW_NULL = 0, - FLOW_PENDING, - FLOW_ALLOCATED -}; - #endif /* OUROBOROS_FLOW_H */ diff --git a/include/ouroboros/ipcp.h b/include/ouroboros/ipcp.h index 89b9fa92..0d62bd59 100644 --- a/include/ouroboros/ipcp.h +++ b/include/ouroboros/ipcp.h @@ -46,7 +46,7 @@ int ipcp_unreg(pid_t pid, size_t difs_size); int ipcp_enroll(pid_t pid, - char * member_name, + char * dif_name, char * n_1_dif); int ipcp_bootstrap(pid_t pid, diff --git a/include/ouroboros/irm.h b/include/ouroboros/irm.h index 9d547643..743ed79c 100644 --- a/include/ouroboros/irm.h +++ b/include/ouroboros/irm.h @@ -46,9 +46,11 @@ int irm_reg(char * name, bool autoexec, char ** difs, size_t difs_size); + int irm_unreg(char * name, const instance_name_t * api, char ** difs, size_t difs_size, bool hard); + #endif /* OUROBOROS_IRM_H */ diff --git a/src/ipcpd/flow.c b/include/ouroboros/nsm.h index 4ca61341..69b1d9d2 100644 --- a/src/ipcpd/flow.c +++ b/include/ouroboros/nsm.h @@ -1,9 +1,9 @@ /* * Ouroboros - Copyright (C) 2016 * - * Flows + * The API to instruct the global Namespace Manager * - * Dimitri Staessens <[email protected]> + * Sander Vrijders <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,35 +20,24 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include <stdlib.h> -#include "flow.h" +#ifndef OUROBOROS_NSM_H +#define OUROBOROS_NSM_H -#define OUROBOROS_PREFIX "ipcpd/flow" +#include <stdint.h> +#include <unistd.h> -#include <ouroboros/logs.h> -#include <ouroboros/flow.h> +int nsm_reg(char * name, + char ** dafs, + size_t dafs_size); -struct flow * flow_create(int port_id) -{ - struct flow * flow = malloc(sizeof *flow); - if (flow == NULL) { - LOG_DBGF("Could not malloc flow."); - return NULL; - } +int nsm_unreg(char * name, + char ** dafs, + size_t dafs_size); - INIT_LIST_HEAD(&flow->list); - - flow->port_id = port_id; - flow->state = FLOW_NULL; - - pthread_mutex_init(&flow->lock, NULL); - - return flow; -} - -void flow_destroy(struct flow * flow) -{ - if (flow == NULL) - return; - free(flow); -} +/* + * dafs is an out parameter + * The amount of DAFs is returned + */ +ssize_t nsm_resolve(char * name, + char ** dafs); +#endif diff --git a/src/ipcpd/CMakeLists.txt b/src/ipcpd/CMakeLists.txt index 49bd49f2..bb482ed9 100644 --- a/src/ipcpd/CMakeLists.txt +++ b/src/ipcpd/CMakeLists.txt @@ -1,6 +1,5 @@ set(IPCP_SOURCES # Add source files here - ${CMAKE_CURRENT_SOURCE_DIR}/flow.c ${CMAKE_CURRENT_SOURCE_DIR}/ipcp.c ${CMAKE_CURRENT_SOURCE_DIR}/ipcp-data.c ) diff --git a/src/ipcpd/flow.h b/src/ipcpd/flow.h index 6f50698e..e27882e2 100644 --- a/src/ipcpd/flow.h +++ b/src/ipcpd/flow.h @@ -24,21 +24,14 @@ #define OUROBOROS_IPCP_FLOW_H #include <ouroboros/list.h> -#include <ouroboros/flow.h> +#include <ouroboros/common.h> #include <ouroboros/shm_ap_rbuff.h> #include <pthread.h> struct flow { - struct list_head list; - int port_id; struct shm_ap_rbuff * rb; enum flow_state state; - - pthread_mutex_t lock; }; -struct flow * flow_create(int port_id); -void flow_destroy(struct flow * flow); - #endif /* OUROBOROS_FLOW_H */ diff --git a/src/ipcpd/ipcp-ops.h b/src/ipcpd/ipcp-ops.h index ffbc9cd7..a1d9f23f 100644 --- a/src/ipcpd/ipcp-ops.h +++ b/src/ipcpd/ipcp-ops.h @@ -30,7 +30,7 @@ struct ipcp_ops { int (* ipcp_bootstrap)(struct dif_config * conf); - int (* ipcp_enroll)(char * member_name, + int (* ipcp_enroll)(char * dif_name, char * n_1_dif); int (* ipcp_reg)(char ** dif_names, size_t len); diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c index 901abae6..b5108712 100644 --- a/src/ipcpd/ipcp.c +++ b/src/ipcpd/ipcp.c @@ -159,7 +159,7 @@ void * ipcp_main_loop(void * o) } ret_msg.has_result = true; ret_msg.result = - _ipcp->ops->ipcp_enroll(msg->member_name, + _ipcp->ops->ipcp_enroll(msg->dif_name, msg->n_1_dif); break; diff --git a/src/ipcpd/local/main.c b/src/ipcpd/local/main.c index 1e033a21..06e2b0a4 100644 --- a/src/ipcpd/local/main.c +++ b/src/ipcpd/local/main.c @@ -31,7 +31,7 @@ #include <ouroboros/dif_config.h> #include <ouroboros/sockets.h> #include <ouroboros/bitmap.h> -#include <ouroboros/flow.h> +#include <ouroboros/common.h> #include <ouroboros/dev.h> #define OUROBOROS_PREFIX "ipcpd/local" diff --git a/src/irmd/main.c b/src/irmd/main.c index edbf2d69..bc57c4b2 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -27,7 +27,7 @@ #include <ouroboros/sockets.h> #include <ouroboros/irm.h> #include <ouroboros/ipcp.h> -#include <ouroboros/da.h> +#include <ouroboros/nsm.h> #include <ouroboros/list.h> #include <ouroboros/instance_name.h> #include <ouroboros/utils.h> @@ -1049,7 +1049,6 @@ static int bootstrap_ipcp(instance_name_t * api, static int enroll_ipcp(instance_name_t * api, char * dif_name) { - char * member = NULL; char ** n_1_difs = NULL; ssize_t n_1_difs_size = 0; struct ipcp_entry * entry = NULL; @@ -1079,16 +1078,7 @@ static int enroll_ipcp(instance_name_t * api, return -1; } - member = da_resolve_daf(dif_name); - if (member == NULL) { - free(entry->dif_name); - entry->dif_name = NULL; - pthread_rwlock_unlock(&instance->reg_lock); - pthread_rwlock_unlock(&instance->state_lock); - return -1; - } - - n_1_difs_size = da_resolve_dap(member, n_1_difs); + n_1_difs_size = nsm_resolve(dif_name, n_1_difs); if (n_1_difs_size < 1) { free(entry->dif_name); entry->dif_name = NULL; @@ -1098,7 +1088,7 @@ static int enroll_ipcp(instance_name_t * api, return -1; } - if (ipcp_enroll(api->id, member, n_1_difs[0])) { + if (ipcp_enroll(api->id, dif_name, n_1_difs[0])) { free(entry->dif_name); entry->dif_name = NULL; pthread_rwlock_unlock(&instance->reg_lock); diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index ed7f2fc6..2a75ef17 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -25,13 +25,13 @@ set(SOURCE_FILES # Add source files here bitmap.c cdap.c - da.c dev.c du_buff.c instance_name.c ipcp.c irm.c list.c + nsm.c shm_ap_rbuff.c shm_du_map.c sockets.c diff --git a/src/lib/dev.c b/src/lib/dev.c index 1725cca3..ad311f7f 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -23,6 +23,7 @@ #define OUROBOROS_PREFIX "libouroboros-dev" #include <ouroboros/config.h> +#include <ouroboros/errno.h> #include <ouroboros/logs.h> #include <ouroboros/dev.h> #include <ouroboros/sockets.h> @@ -62,13 +63,13 @@ int ap_init(char * ap_name) _ap_instance = malloc(sizeof(struct ap_data)); if (_ap_instance == NULL) { - return -1; + return -ENOMEM; } _ap_instance->api = instance_name_create(); if (_ap_instance->api == NULL) { free(_ap_instance); - return -1; + return -ENOMEM; } if (instance_name_init_from(_ap_instance->api, @@ -76,14 +77,14 @@ int ap_init(char * ap_name) getpid()) == NULL) { instance_name_destroy(_ap_instance->api); free(_ap_instance); - return -1; + return -ENOMEM; } _ap_instance->fds = bmp_create(AP_MAX_FLOWS, 0); if (_ap_instance->fds == NULL) { instance_name_destroy(_ap_instance->api); free(_ap_instance); - return -1; + return -ENOMEM; } _ap_instance->dum = shm_du_map_open(); @@ -210,7 +211,7 @@ int flow_accept(char ** ae_name) pthread_rwlock_unlock(&_ap_instance->flows_lock); pthread_rwlock_unlock(&_ap_instance->data_lock); irm_msg__free_unpacked(recv_msg, NULL); - return -1; + return -ENOMEM; } } @@ -232,7 +233,7 @@ int flow_alloc_resp(int fd, irm_msg_t * recv_msg = NULL; int ret = -1; - if (fd < 0) + if (fd < 0 || fd >= AP_MAX_FLOWS) return -EBADF; msg.code = IRM_MSG_CODE__IRM_FLOW_ALLOC_RESP; @@ -243,6 +244,12 @@ int flow_alloc_resp(int fd, pthread_rwlock_rdlock(&_ap_instance->data_lock); pthread_rwlock_rdlock(&_ap_instance->flows_lock); + if (_ap_instance->flows[fd].port_id < 0) { + pthread_rwlock_unlock(&_ap_instance->flows_lock); + pthread_rwlock_unlock(&_ap_instance->data_lock); + return -ENOTALLOC; + } + msg.port_id = _ap_instance->flows[fd].port_id; pthread_rwlock_unlock(&_ap_instance->flows_lock); @@ -343,7 +350,7 @@ int flow_alloc_res(int fd) irm_msg_t * recv_msg = NULL; int result = 0; - if (fd < 0) + if (fd < 0 || fd >= AP_MAX_FLOWS) return -EBADF; msg.code = IRM_MSG_CODE__IRM_FLOW_ALLOC_RES; @@ -352,6 +359,12 @@ int flow_alloc_res(int fd) pthread_rwlock_rdlock(&_ap_instance->data_lock); pthread_rwlock_rdlock(&_ap_instance->flows_lock); + if (_ap_instance->flows[fd].port_id < 0) { + pthread_rwlock_unlock(&_ap_instance->flows_lock); + pthread_rwlock_unlock(&_ap_instance->data_lock); + return -ENOTALLOC; + } + msg.port_id = _ap_instance->flows[fd].port_id; pthread_rwlock_unlock(&_ap_instance->flows_lock); @@ -386,6 +399,12 @@ int flow_dealloc(int fd) pthread_rwlock_rdlock(&_ap_instance->data_lock); pthread_rwlock_wrlock(&_ap_instance->flows_lock); + if (_ap_instance->flows[fd].port_id < 0) { + pthread_rwlock_unlock(&_ap_instance->flows_lock); + pthread_rwlock_unlock(&_ap_instance->data_lock); + return -ENOTALLOC; + } + msg.port_id = _ap_instance->flows[fd].port_id; _ap_instance->flows[fd].port_id = -1; @@ -421,12 +440,18 @@ int flow_cntl(int fd, int cmd, int oflags) { int old; - if (fd < 0) + if (fd < 0 || fd >= AP_MAX_FLOWS) return -EBADF; pthread_rwlock_rdlock(&_ap_instance->data_lock); pthread_rwlock_wrlock(&_ap_instance->flows_lock); + if (_ap_instance->flows[fd].port_id < 0) { + pthread_rwlock_unlock(&_ap_instance->flows_lock); + pthread_rwlock_unlock(&_ap_instance->data_lock); + return -ENOTALLOC; + } + old = _ap_instance->flows[fd].oflags; switch (cmd) { @@ -454,12 +479,18 @@ ssize_t flow_write(int fd, void * buf, size_t count) if (buf == NULL) return 0; - if (fd < 0) + if (fd < 0 || fd >= AP_MAX_FLOWS) return -EBADF; pthread_rwlock_rdlock(&_ap_instance->data_lock); pthread_rwlock_rdlock(&_ap_instance->flows_lock); + if (_ap_instance->flows[fd].port_id < 0) { + pthread_rwlock_unlock(&_ap_instance->flows_lock); + pthread_rwlock_unlock(&_ap_instance->data_lock); + return -ENOTALLOC; + } + if (_ap_instance->flows[fd].oflags & FLOW_O_NONBLOCK) { index = shm_create_du_buff(_ap_instance->dum, count + DU_BUFF_HEADSPACE + @@ -470,7 +501,7 @@ ssize_t flow_write(int fd, void * buf, size_t count) if (index == -1) { pthread_rwlock_unlock(&_ap_instance->flows_lock); pthread_rwlock_unlock(&_ap_instance->data_lock); - return -1; + return -EAGAIN; } e.index = index; @@ -480,7 +511,7 @@ ssize_t flow_write(int fd, void * buf, size_t count) shm_release_du_buff(_ap_instance->dum, index); pthread_rwlock_unlock(&_ap_instance->flows_lock); pthread_rwlock_unlock(&_ap_instance->data_lock); - return -EPIPE; + return -1; } } else { /* blocking */ while ((index = shm_create_du_buff(_ap_instance->dum, @@ -510,7 +541,7 @@ ssize_t flow_read(int fd, void * buf, size_t count) int n; uint8_t * sdu; - if (fd < 0) + if (fd < 0 || fd >= AP_MAX_FLOWS) return -EBADF; pthread_rwlock_rdlock(&_ap_instance->data_lock); @@ -519,16 +550,17 @@ ssize_t flow_read(int fd, void * buf, size_t count) if (_ap_instance->flows[fd].port_id < 0) { pthread_rwlock_unlock(&_ap_instance->flows_lock); pthread_rwlock_unlock(&_ap_instance->data_lock); - return -1; + return -ENOTALLOC; } if (_ap_instance->flows[fd].oflags & FLOW_O_NONBLOCK) { idx = shm_ap_rbuff_read_port(_ap_instance->rb, _ap_instance->flows[fd].port_id); } else { /* block */ - while ((idx = shm_ap_rbuff_read_port( - _ap_instance->rb, - _ap_instance->flows[fd].port_id)) < 0) + while ((idx = + shm_ap_rbuff_read_port(_ap_instance->rb, + _ap_instance-> + flows[fd].port_id)) < 0) ; } @@ -536,7 +568,7 @@ ssize_t flow_read(int fd, void * buf, size_t count) if (idx < 0) { pthread_rwlock_unlock(&_ap_instance->data_lock); - return -1; + return -EAGAIN; } n = shm_du_map_read_sdu(&sdu, diff --git a/src/lib/instance_name.c b/src/lib/instance_name.c index 10a432d5..844bb924 100644 --- a/src/lib/instance_name.c +++ b/src/lib/instance_name.c @@ -106,11 +106,11 @@ int instance_name_cpy(instance_name_t * dst, instance_name_t * res; if (src == NULL || dst == NULL) - return -1; + return -EINVAL; res = instance_name_init_from(dst, src->name, src->id); if (res == NULL) - return -1; + return -ENOMEM; return 0; } diff --git a/src/lib/ipcp.c b/src/lib/ipcp.c index a43afd21..730880f9 100644 --- a/src/lib/ipcp.c +++ b/src/lib/ipcp.c @@ -275,35 +275,32 @@ int ipcp_bootstrap(pid_t pid, } int ipcp_enroll(pid_t pid, - char * member_name, + char * dif_name, char * n_1_dif) { ipcp_msg_t msg = IPCP_MSG__INIT; ipcp_msg_t * recv_msg = NULL; int ret = -1; - if (n_1_dif == NULL || member_name == NULL) + if (n_1_dif == NULL || dif_name == NULL) return -EINVAL; - msg.code = IPCP_MSG_CODE__IPCP_ENROLL; - msg.member_name = member_name; - msg.n_1_dif = n_1_dif; + msg.code = IPCP_MSG_CODE__IPCP_ENROLL; + msg.dif_name = dif_name; + msg.n_1_dif = n_1_dif; recv_msg = send_recv_ipcp_msg(pid, &msg); if (recv_msg == NULL) { - free(msg.member_name); return -1; } if (recv_msg->has_result == false) { ipcp_msg__free_unpacked(recv_msg, NULL); - free(msg.member_name); return -1; } ret = recv_msg->result; ipcp_msg__free_unpacked(recv_msg, NULL); - free(msg.member_name); return ret; } diff --git a/src/lib/ipcpd_messages.proto b/src/lib/ipcpd_messages.proto index 63e41986..9eb5707c 100644 --- a/src/lib/ipcpd_messages.proto +++ b/src/lib/ipcpd_messages.proto @@ -15,7 +15,7 @@ enum ipcp_msg_code { message ipcp_msg { required ipcp_msg_code code = 1; - optional string member_name = 2; + optional string dif_name = 2; optional string n_1_dif = 3; repeated string dif_names = 4; optional int32 len = 5; diff --git a/src/lib/irm.c b/src/lib/irm.c index ff5c3237..8fd0a7e7 100644 --- a/src/lib/irm.c +++ b/src/lib/irm.c @@ -22,6 +22,7 @@ #define OUROBOROS_PREFIX "libouroboros-irm" +#include <ouroboros/errno.h> #include <ouroboros/irm.h> #include <ouroboros/common.h> #include <ouroboros/logs.h> @@ -143,7 +144,7 @@ int irm_bootstrap_ipcp(instance_name_t * api, config.if_name = conf->if_name; break; default: - return -1; + return -EIPCPTYPE; } recv_msg = send_recv_irm_msg(&msg); @@ -180,7 +181,7 @@ int irm_enroll_ipcp(instance_name_t * api, msg.dif_name = malloc(sizeof(*(msg.dif_name))); if (msg.dif_name == NULL) { LOG_ERR("Failed to malloc"); - return -1; + return -ENOMEM; } msg.dif_name[0] = dif_name; diff --git a/include/ouroboros/da.h b/src/lib/nsm.c index 406be7a8..069db139 100644 --- a/include/ouroboros/da.h +++ b/src/lib/nsm.c @@ -1,7 +1,7 @@ /* * Ouroboros - Copyright (C) 2016 * - * The API to consult the DIF Allocator + * The API to instruct the global Namespace Manager * * Sander Vrijders <[email protected]> * @@ -20,18 +20,26 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifndef OUROBOROS_DA_H -#define OUROBOROS_DA_H +#include <ouroboros/nsm.h> -#include <stdint.h> -#include <unistd.h> +int nsm_reg(char * name, + char ** dafs, + size_t dafs_size) +{ -char * da_resolve_daf(char * daf_name); -/* - * n_1_difs is an out parameter - * The amount of n_1_difs is returned - */ -ssize_t da_resolve_dap(char * name, - char ** n_1_difs); + return -1; +} + +int nsm_unreg(char * name, + char ** dafs, + size_t dafs_size) +{ + + return -1; +} -#endif +ssize_t nsm_resolve(char * name, + char ** dafs) +{ + return -1; +} |