blob: 9c98a80230aa57e3103a8e1d037b7086fb253bd2 [file] [log] [blame]
/**
* @file netconf.h
* @author Radek Krejci <rkrejci@cesnet.cz>
* @brief Main header of Python3 bindings for libnetconf2 (client-side)
*
* Copyright (c) 2017 CESNET, z.s.p.o.
*
* This source code is licensed under BSD 3-Clause License (the "License").
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*/
#ifndef PYNETCONF_H_
#define PYNETCONF_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "../src/netconf.h"
#include "../src/log.h"
#include "../src/messages_client.h"
#include "../src/session_client.h"
#include "../src/session_client_ch.h"
#ifdef UNUSED
#elif defined(__GNUC__)
# define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
#elif defined(__LCLINT__)
# define UNUSED(x) /*@unused@*/ x
#elif defined(__cplusplus)
# define UNUSED(x)
#else
# define UNUSED(x) x
#endif
typedef struct {
PyObject_HEAD
PyObject *username; /* username */
PyObject *password; /* plaintext password for authentication or unlocking a private key */
PyObject *pubkeys; /* public keys for the key authentication, both pubkey and privkey must be set */
PyObject *privkeys; /* private key for the key authentication, both pubkey and privkey must be set */
PyObject *clb_hostcheck; /* callback to check host key (fingerprint) */
PyObject *clb_hostcheck_data; /* private data for the host key check callback */
PyObject *clb_password; /* callback for SSH password authentication */
PyObject *clb_password_data; /* private data for the SSH password authentication callback */
PyObject *clb_interactive; /* callback for SSH keyboard-interactive authentication */
PyObject *clb_interactive_data; /* private data for the SSH keyboard-interactive authentication callback */
} ncSSHObject;
typedef struct {
PyObject_HEAD
PyObject *cert_file; /* path to the client certificate file */
PyObject *key_file; /* path to the file with the private key for the client certificate */
PyObject *ca_file; /* path to the file with the CA certificate(s) used to verify the server certificate */
PyObject *ca_dir; /* path to the directory with the CA certificate(s) used to verify the server certificate */
PyObject *crl_file; /* path to the file with the CRL certificate(s) used to check for revocated server certificates */
PyObject *crl_dir; /* path to the directory with the CRL certificate(s) used to check for revocated server certificates */
} ncTLSObject;
typedef struct {
PyObject_HEAD
struct nc_err *err;
struct ly_ctx *ctx;
} ncErrObject;
extern PyTypeObject ncSSHType;
extern PyTypeObject ncTLSType;
extern PyTypeObject ncSessionType;
extern PyTypeObject ncErrType;
#ifdef __cplusplus
}
#endif
#endif /* PYNETCONF_H_ */