summaryrefslogtreecommitdiffstats
path: root/sys/netncp
diff options
context:
space:
mode:
authorbp <bp@FreeBSD.org>1999-10-12 11:56:41 +0000
committerbp <bp@FreeBSD.org>1999-10-12 11:56:41 +0000
commit41cfec2c0234181158049ff25ca1f5de503d7f1a (patch)
tree5df7367bbf1788b36cc6e008c01b2b3fe1e5f0e9 /sys/netncp
parentc364c2223a670b6987002786543b211abaca4862 (diff)
downloadFreeBSD-src-41cfec2c0234181158049ff25ca1f5de503d7f1a.zip
FreeBSD-src-41cfec2c0234181158049ff25ca1f5de503d7f1a.tar.gz
Initial import of ncp library sources.
Reviewed by: jdp, mdodd
Diffstat (limited to 'sys/netncp')
-rw-r--r--sys/netncp/ncp_cfg.h9
-rw-r--r--sys/netncp/ncp_file.h92
-rw-r--r--sys/netncp/ncp_lib.h258
-rw-r--r--sys/netncp/ncp_rcfile.h64
4 files changed, 423 insertions, 0 deletions
diff --git a/sys/netncp/ncp_cfg.h b/sys/netncp/ncp_cfg.h
new file mode 100644
index 0000000..82a30d7
--- /dev/null
+++ b/sys/netncp/ncp_cfg.h
@@ -0,0 +1,9 @@
+/*
+ * static configuration for libncp
+ *
+ * $FreeBSD$
+ */
+
+#define NCP_NLS_KOI2CP866
+#define NCP_NLS_DEFAULT NCP_NLS_KOI_866
+#define NCP_PREFIX ""
diff --git a/sys/netncp/ncp_file.h b/sys/netncp/ncp_file.h
new file mode 100644
index 0000000..17b5bd5
--- /dev/null
+++ b/sys/netncp/ncp_file.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 1999, Boris Popov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Boris Popov.
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _NCP_NCP_FILE_H_
+#define _NCP_NCP_FILE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+ nuint32 sequence;
+ nuint32 parent;
+ nuint32 attributes;
+ nuint8 uniqueID;
+ nuint8 flags;
+ nuint8 nameSpace;
+ nuint8 nameLength;
+ nuint8 name [256];
+ nuint32 creationDateAndTime;
+ nuint32 ownerID;
+ nuint32 lastArchiveDateAndTime;
+ nuint32 lastArchiverID;
+ nuint32 updateDateAndTime;
+ nuint32 updatorID;
+ nuint32 fileSize;
+ nuint8 reserved[44];
+ nuint16 inheritedRightsMask;
+ nuint16 lastAccessDate;
+ nuint32 deletedTime;
+ nuint32 deletedDateAndTime;
+ nuint32 deletorID;
+ nuint8 reserved3 [16];
+} __attribute__((packed)) NWDELETED_INFO;
+
+int ncp_AllocTempDirHandle(char *path, NWDIR_HANDLE *pdh);
+int ncp_DeallocateDirHandle(NWDIR_HANDLE dh);
+int ncp_GetNSEntryInfo(NWDIR_HANDLE dh, struct nw_entry_info *fi, int *ns);
+
+NWCCODE ncp_ScanNSEntryInfo(NWCONN_HANDLE cH, nuint8 namSpc, nuint16 attrs,
+ SEARCH_SEQUENCE *seq, pnstr8 searchPattern, nuint32 retInfoMask,
+ NW_ENTRY_INFO *entryInfo);
+
+NWCCODE ncp_PurgeDeletedFile(NWCONN_HANDLE cH, nuint32 iterHandle,
+ nuint32 volNum, nuint32 dirBase, nuint8 ns);
+
+NWCCODE NWRecoverDeletedFile(NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle,
+ nuint32 iterHandle,
+ nuint32 volNum, nuint32 dirBase,
+ pnstr8 delFileName, pnstr8 rcvrFileName);
+
+NWCCODE ncp_ScanForDeletedFiles(NWCONN_HANDLE cH, pnuint32 iterHandle,
+ pnuint32 volNum, pnuint32 dirBase, nuint8 ns,
+ NWDELETED_INFO *entryInfo);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NCP_NCP_FILE_ */
diff --git a/sys/netncp/ncp_lib.h b/sys/netncp/ncp_lib.h
new file mode 100644
index 0000000..bff6339
--- /dev/null
+++ b/sys/netncp/ncp_lib.h
@@ -0,0 +1,258 @@
+/*
+ * Copyright (c) 1999, Boris Popov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Boris Popov.
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _NCP_LIB_H_
+#define _NCP_LIB_H_
+
+#define IPX
+#define INET
+
+#include <netncp/ncp.h>
+#include <netncp/ncp_conn.h>
+#include <netncp/ncp_user.h>
+#include <netncp/ncp_rq.h>
+
+#define ncp_printf printf
+
+#define sipx_cnetwork sipx_addr.x_net.c_net
+#define sipx_node sipx_addr.x_host.c_host
+#define ipx_netlong(iaddr) (((union ipx_net_u *)(&((iaddr).x_net)))->long_e)
+
+#define STDPARAM_ARGS 'A':case 'B':case 'C':case 'I':case 'M': \
+ case 'N':case 'U':case 'R':case 'S':case 'T': \
+ case 'W':case 'O':case 'P'
+
+#define STDPARAM_OPT "A:BCI:M:N:O:P:U:R:S:T:W:"
+
+#ifndef min
+#define min(a,b) (((a)<(b)) ? (a) : (b))
+#endif
+
+
+/*
+ * An attempt to do a unified options parser
+ */
+enum ncp_argtype {NCA_STR,NCA_INT,NCA_BOOL};
+
+struct ncp_args;
+
+typedef int ncp_setopt_t (struct ncp_args*);
+
+#define NAFL_NONE 0x0000
+#define NAFL_HAVEMIN 0x0001
+#define NAFL_HAVEMAX 0x0002
+#define NAFL_MINMAX NAFL_HAVEMIN | NAFL_HAVEMAX
+
+struct ncp_args {
+ enum ncp_argtype at;
+ int opt; /* command line option */
+ char *name; /* rc file equiv */
+ int flag; /* NAFL_* */
+ int ival; /* int/bool values, or max len for str value */
+ char *str; /* string value */
+ int min; /* min for ival */
+ int max; /* max for ival */
+ ncp_setopt_t *fn;/* call back to validate */
+};
+
+typedef struct {
+ nuint8 day;
+ nuint8 month;
+ nuint16 year;
+} NW_DATE;
+
+/* hours is a nuint16 so that this structure will be the same length as a dword */
+typedef struct {
+ nuint8 seconds;
+ nuint8 minutes;
+ nuint16 hours;
+} NW_TIME;
+
+struct ncp_bitname {
+ u_int bn_bit;
+ char *bn_name;
+};
+
+int ncp_args_parserc(struct ncp_args *na, char *sect, ncp_setopt_t *set_callback);
+int ncp_args_parseopt(struct ncp_args *na, int opt, char *optarg, ncp_setopt_t *set_callback);
+
+
+struct sockaddr_ipx;
+struct ipx_addr;
+struct sockaddr;
+struct ncp_buf;
+struct rcfile;
+
+int ncp_initlib(void);
+int ncp_connect(struct ncp_conn_args *li, int *connHandle);
+int ncp_connect_addr(struct sockaddr *sa, NWCONN_HANDLE *chp);
+int ncp_disconnect(int connHandle);
+int ncp_request(int connHandle,int function, struct ncp_buf *ncpbuf);
+int ncp_conn_request(int connHandle, struct ncp_buf *ncpbuf);
+int ncp_login(int connHandle, const char *user, int objtype, const char *password);
+int ncp_conn_scan(struct ncp_conn_loginfo *li, int *connHandle);
+int ncp_conn_cnt(void);
+void *ncp_conn_list(void);
+int ncp_conn_getinfo(int connHandle, struct ncp_conn_stat *ps);
+int ncp_conn_getuser(int connHandle, char **user);
+int ncp_conn2ref(int connHandle, int *connRef);
+int ncp_conn_dup(NWCONN_HANDLE org, NWCONN_HANDLE *res);
+int ncp_path2conn(char *path, int *connHandle);
+int ncp_li_init(struct ncp_conn_loginfo *li, int argc, char *argv[]);
+void ncp_li_done(struct ncp_conn_loginfo *li);
+int ncp_li_login(struct ncp_conn_loginfo *li, int *aconnHandle);
+int ncp_li_readrc(struct ncp_conn_loginfo *li);
+int ncp_li_check(struct ncp_conn_loginfo *li);
+int ncp_li_arg(struct ncp_conn_loginfo *li, int opt, char *arg);
+int ncp_li_setserver(struct ncp_conn_loginfo *li, const char *arg);
+int ncp_li_setuser(struct ncp_conn_loginfo *li, char *arg);
+int ncp_li_setpassword(struct ncp_conn_loginfo *li, const char *passwd);
+int ncp_conn_setflags(int connHandle, u_int16_t mask, u_int16_t flags);
+int ncp_conn_find(char *server, char *user);
+NWCCODE NWRequest(NWCONN_HANDLE cH, nuint16 fn,
+ nuint16 nrq, NW_FRAGMENT* rq,
+ nuint16 nrp, NW_FRAGMENT* rp) ;
+
+#define ncp_setpermanent(connHandle,on) ncp_conn_setflags(connHandle, NCPFL_PERMANENT, (on) ? NCPFL_PERMANENT : 0)
+#define ncp_setprimary(connHandle,on) ncp_conn_setflags(connHandle, NCPFL_PRIMARY, (on) ? NCPFL_PRIMARY : 0)
+
+int ncp_find_fileserver(struct ncp_conn_loginfo *li, int af,char *name);
+int ncp_find_server(struct ncp_conn_loginfo *li, int type, int af,char *name);
+
+/* misc rotines */
+char* ncp_str_upper(char *name);
+int ncp_open_rcfile(void);
+int ncp_getopt(int nargc, char * const *nargv, const char *ostr);
+void NWUnpackDateTime(nuint32 dateTime, NW_DATE *sDate, NW_TIME *sTime);
+void NWUnpackDate(nuint16 date, NW_DATE *sDate);
+void NWUnpackTime(nuint16 time, NW_TIME *sTime);
+time_t ncp_UnpackDateTime(nuint32 dateTime);
+int ncp_GetFileServerDateAndTime(NWCONN_HANDLE cH, time_t *target);
+int ncp_SetFileServerDateAndTime(NWCONN_HANDLE cH, time_t * source);
+NWCCODE NWDownFileServer(NWCONN_HANDLE cH, int force);
+NWCCODE NWCloseBindery(NWCONN_HANDLE cH);
+NWCCODE NWOpenBindery(NWCONN_HANDLE cH);
+NWCCODE NWDisableTTS(NWCONN_HANDLE cH);
+NWCCODE NWEnableTTS(NWCONN_HANDLE cH);
+NWCCODE NWDisableFileServerLogin(NWCONN_HANDLE cH);
+NWCCODE NWEnableFileServerLogin(NWCONN_HANDLE cH);
+void ncp_error(char *fmt, int error,...);
+char *ncp_printb(char *dest, int flags, const struct ncp_bitname *bnp);
+void nw_keyhash(const u_char *key, const u_char *buf, int buflen, u_char *target);
+void nw_encrypt(const u_char *fra, const u_char *buf, u_char *target);
+void ipx_print_addr(struct ipx_addr *ipx);
+
+/* bindery calls */
+int ncp_get_bindery_object_id(int connHandle, u_int16_t object_type, const char *object_name,
+ struct ncp_bindery_object *target);
+int ncp_get_bindery_object_name(int connHandle, u_int32_t object_id,
+ struct ncp_bindery_object *target);
+int ncp_scan_bindery_object(int connHandle, u_int32_t last_id, u_int16_t object_type,
+ char *search_string, struct ncp_bindery_object *target);
+int ncp_read_property_value(int connHandle,int object_type, const char *object_name,
+ int segment, const char *prop_name, struct nw_property *target);
+void shuffle(const u_char *lon, const u_char *buf, int buflen, u_char *target);
+int ncp_get_encryption_key(NWCONN_HANDLE cH, char *target);
+int ncp_change_obj_passwd(NWCONN_HANDLE connid,
+ const struct ncp_bindery_object *object,
+ const u_char *key,
+ const u_char *oldpasswd, const u_char *newpasswd);
+int ncp_keyed_verify_password(NWCONN_HANDLE cH, char *key, char *passwd,
+ struct ncp_bindery_object *objinfo);
+
+/* queue calls */
+int ncp_create_queue_job_and_file(int connHandle, u_int32_t queue_id, struct queue_job *job);
+int ncp_close_file_and_start_job(int connHandle, u_int32_t queue_id, struct queue_job *job);
+int ncp_attach_to_queue(int connHandle, u_int32_t queue_id);
+int ncp_detach_from_queue(int connHandle, u_int32_t queue_id);
+int ncp_service_queue_job(int connHandle, u_int32_t queue_id, u_int16_t job_type,
+ struct queue_job *job);
+int ncp_finish_servicing_job(int connHandle, u_int32_t queue_id, u_int32_t job_number,
+ u_int32_t charge_info);
+int ncp_abort_servicing_job(int connHandle, u_int32_t queue_id, u_int32_t job_number);
+int ncp_get_queue_length(int connHandle, u_int32_t queue_id, u_int32_t *queue_length);
+int ncp_get_queue_job_ids(int connHandle, u_int32_t queue_id, u_int32_t queue_section,
+ u_int32_t *length1, u_int32_t *length2, u_int32_t ids[]);
+int ncp_get_queue_job_info(int connHandle, u_int32_t queue_id, u_int32_t job_id,
+ struct nw_queue_job_entry *jobdata);
+/*
+ * file system and volume calls
+ */
+int ncp_read(int connHandle, ncp_fh *fh, off_t offset, size_t count, char *target);
+int ncp_write(int connHandle, ncp_fh *fh, off_t offset, size_t count, char *source);
+int ncp_geteinfo(char *path, struct nw_entry_info *fi);
+int ncp_NSEntryInfo(NWCONN_HANDLE cH, nuint8 ns, nuint8 vol, nuint32 dirent,
+ NW_ENTRY_INFO *entryInfo);
+
+NWCCODE NWGetVolumeName(NWCONN_HANDLE cH, u_char volume, char *name);
+
+/* misc ncp calls */
+int ncp_get_file_server_information(int connHandle, struct ncp_file_server_info *target);
+int ncp_get_stations_logged_info(int connHandle, u_int32_t connection,
+ struct ncp_bindery_object *target, time_t *login_time);
+int ncp_get_internet_address(int connHandle, u_int32_t connection, struct ipx_addr *target,
+ u_int8_t * conn_type);
+NWCCODE NWGetObjectConnectionNumbers(NWCONN_HANDLE connHandle,
+ pnstr8 pObjName, nuint16 objType,
+ pnuint16 pNumConns, pnuint16 pConnHandleList,
+ nuint16 maxConns);
+/*
+ * Message broadcast
+ */
+NWCCODE NWDisableBroadcasts(NWCONN_HANDLE connHandle);
+NWCCODE NWEnableBroadcasts(NWCONN_HANDLE connHandle);
+NWCCODE NWBroadcastToConsole(NWCONN_HANDLE connHandle, pnstr8 message);
+NWCCODE NWSendBroadcastMessage(NWCONN_HANDLE connHandle, pnstr8 message,
+ nuint16 connCount, pnuint16 connList, pnuint8 resultList);
+NWCCODE NWGetBroadcastMessage(NWCONN_HANDLE connHandle, pnstr8 message);
+
+/*
+ * RPC calls
+ */
+NWCCODE NWSMExecuteNCFFile(NWCONN_HANDLE cH, pnstr8 NCFFileName);
+NWCCODE NWSMLoadNLM(NWCONN_HANDLE cH, pnstr8 cmd);
+NWCCODE NWSMUnloadNLM(NWCONN_HANDLE cH, pnstr8 cmd);
+NWCCODE NWSMMountVolume(NWCONN_HANDLE cH, pnstr8 volName, nuint32* volnum);
+NWCCODE NWSMDismountVolumeByName(NWCONN_HANDLE cH, pnstr8 vol);
+NWCCODE NWSMSetDynamicCmdIntValue(NWCONN_HANDLE cH, pnstr8 setCommandName, nuint32 cmdValue);
+NWCCODE NWSMSetDynamicCmdStrValue(NWCONN_HANDLE cH, pnstr8 setCommandName, pnstr8 cmdValue);
+
+int dostat(int modnum, char *modname, int *offset);
+
+extern int ncp_opterr, ncp_optind, ncp_optopt, ncp_optreset;
+extern char *ncp_optarg;
+
+extern struct rcfile *ncp_rc;
+extern int sysentoffset;
+#endif /* _NCP_LIB_H_ */
diff --git a/sys/netncp/ncp_rcfile.h b/sys/netncp/ncp_rcfile.h
new file mode 100644
index 0000000..bbdf8eb
--- /dev/null
+++ b/sys/netncp/ncp_rcfile.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 1999, Boris Popov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Boris Popov.
+ * 4. Neither the name of the author nor the names of any co-contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#ifndef _NCP_RCFILE_H_
+#define _NCP_RCFILE_H_
+#include <sys/queue.h>
+
+struct rckey {
+ SLIST_ENTRY(rckey) rk_next;
+ char *rk_name;
+ char *rk_value;
+};
+
+struct rcsection {
+ SLIST_ENTRY(rcsection) rs_next;
+ SLIST_HEAD(rckey_head,rckey) rs_keys;
+ char *rs_name;
+};
+
+struct rcfile {
+ SLIST_ENTRY(rcfile) rf_next;
+ SLIST_HEAD(rcsec_head, rcsection) rf_sect;
+ char *rf_name;
+ FILE *rf_f;
+};
+
+int rc_open(char *filename,char *mode,struct rcfile **rcfile);
+int rc_close(struct rcfile *rcp);
+int rc_getstringptr(struct rcfile *rcp,char *section, char *key,char **dest);
+int rc_getstring(struct rcfile *rcp,char *section, char *key,int maxlen,char *dest);
+int rc_getint(struct rcfile *rcp,char *section, char *key,int *value);
+int rc_getbool(struct rcfile *rcp,char *section, char *key,int *value);
+
+#endif /* _NCP_RCFILE_H_ */
OpenPOWER on IntegriCloud