⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⣿⣿⣷⣼⣿⠀⣴⠾⠷⠶⠦⡄⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢠⡤⢶⣦⣾⣿⣿⣿⣿⣿⣿⣿⠀⣿⣶⣶⣦⣄⠳⣤⣤⠄⠀⠀⠀
⠀⠀⠀⢀⣼⣳⡿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣗⠈⠙⠻⣶⣄⡀⠀⠀⠀
⠀⠀⠀⣰⠿⠁⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠈⠳⣤⠀⠀
⠀⠀⢀⡟⠀⢰⣿⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠁⠈⠻⣶⣄⠀⠀⠈⠛⢦   
⠀⣀⡼⠃⠀⣼⡟⠀⠀⢸⣿⡿⠉⣿⡿⠿⠛⣿⡄⠀⠀⠀⠙⠿⣆⠀⠀⠀⠈
⠈⠁⠀⠀⢸⡟⠀⠀⠀⢸⣿⠀⠀⣿⠁⠀⠀⠈⠃⠀⠀⠀⠀⠀⠘⢷⡄⠀⠀
⠀⠀⠀⠀⣼⠃⠀⠀⠀⢸⡟⠀⠀⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡆⠀
⠀⠀⠀⣠⡏⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠻⠃⠀⠀⠀⠀⣻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Current Dir: /usr/include/bind9/isc/

[FILE] aes.h [ edit | delete | rename | download ]
[FILE] app.h [ edit | delete | rename | download ]
[FILE] assertions.h [ edit | delete | rename | download ]
[FILE] atomic.h [ edit | delete | rename | download ]
[FILE] backtrace.h [ edit | delete | rename | download ]
[FILE] base32.h [ edit | delete | rename | download ]
[FILE] base64.h [ edit | delete | rename | download ]
[FILE] bind9.h [ edit | delete | rename | download ]
[FILE] boolean.h [ edit | delete | rename | download ]
[FILE] buffer.h [ edit | delete | rename | download ]
[FILE] bufferlist.h [ edit | delete | rename | download ]
[FILE] commandline.h [ edit | delete | rename | download ]
[FILE] condition.h [ edit | delete | rename | download ]
[FILE] counter.h [ edit | delete | rename | download ]
[FILE] crc64.h [ edit | delete | rename | download ]
[FILE] deprecated.h [ edit | delete | rename | download ]
[FILE] dir.h [ edit | delete | rename | download ]
[FILE] entropy.h [ edit | delete | rename | download ]
[FILE] errno.h [ edit | delete | rename | download ]
[FILE] errno2result.h [ edit | delete | rename | download ]
[FILE] error.h [ edit | delete | rename | download ]
[FILE] event.h [ edit | delete | rename | download ]
[FILE] eventclass.h [ edit | delete | rename | download ]
[FILE] file.h [ edit | delete | rename | download ]
[FILE] formatcheck.h [ edit | delete | rename | download ]
[FILE] fsaccess.h [ edit | delete | rename | download ]
[FILE] hash.h [ edit | delete | rename | download ]
[FILE] heap.h [ edit | delete | rename | download ]
[FILE] hex.h [ edit | delete | rename | download ]
[FILE] hmacmd5.h [ edit | delete | rename | download ]
[FILE] hmacsha.h [ edit | delete | rename | download ]
[FILE] ht.h [ edit | delete | rename | download ]
[FILE] httpd.h [ edit | delete | rename | download ]
[FILE] int.h [ edit | delete | rename | download ]
[FILE] interfaceiter.h [ edit | delete | rename | download ]
[FILE] iterated_hash.h [ edit | delete | rename | download ]
[FILE] json.h [ edit | delete | rename | download ]
[FILE] keyboard.h [ edit | delete | rename | download ]
[FILE] lang.h [ edit | delete | rename | download ]
[FILE] lex.h [ edit | delete | rename | download ]
[FILE] lfsr.h [ edit | delete | rename | download ]
[FILE] lib.h [ edit | delete | rename | download ]
[FILE] likely.h [ edit | delete | rename | download ]
[FILE] list.h [ edit | delete | rename | download ]
[FILE] log.h [ edit | delete | rename | download ]
[FILE] magic.h [ edit | delete | rename | download ]
[FILE] md5.h [ edit | delete | rename | download ]
[FILE] mem.h [ edit | delete | rename | download ]
[FILE] meminfo.h [ edit | delete | rename | download ]
[FILE] msgcat.h [ edit | delete | rename | download ]
[FILE] msgs.h [ edit | delete | rename | download ]
[FILE] mutex.h [ edit | delete | rename | download ]
[FILE] mutexblock.h [ edit | delete | rename | download ]
[FILE] net.h [ edit | delete | rename | download ]
[FILE] netaddr.h [ edit | delete | rename | download ]
[FILE] netdb.h [ edit | delete | rename | download ]
[FILE] netscope.h [ edit | delete | rename | download ]
[FILE] offset.h [ edit | delete | rename | download ]
[FILE] once.h [ edit | delete | rename | download ]
[FILE] ondestroy.h [ edit | delete | rename | download ]
[FILE] os.h [ edit | delete | rename | download ]
[FILE] parseint.h [ edit | delete | rename | download ]
[FILE] platform.h [ edit | delete | rename | download ]
[FILE] pool.h [ edit | delete | rename | download ]
[FILE] portset.h [ edit | delete | rename | download ]
[FILE] print.h [ edit | delete | rename | download ]
[FILE] queue.h [ edit | delete | rename | download ]
[FILE] quota.h [ edit | delete | rename | download ]
[FILE] radix.h [ edit | delete | rename | download ]
[FILE] random.h [ edit | delete | rename | download ]
[FILE] ratelimiter.h [ edit | delete | rename | download ]
[FILE] refcount.h [ edit | delete | rename | download ]
[FILE] regex.h [ edit | delete | rename | download ]
[FILE] region.h [ edit | delete | rename | download ]
[FILE] resource.h [ edit | delete | rename | download ]
[FILE] result.h [ edit | delete | rename | download ]
[FILE] resultclass.h [ edit | delete | rename | download ]
[FILE] rwlock.h [ edit | delete | rename | download ]
[FILE] safe.h [ edit | delete | rename | download ]
[FILE] serial.h [ edit | delete | rename | download ]
[FILE] sha1.h [ edit | delete | rename | download ]
[FILE] sha2.h [ edit | delete | rename | download ]
[FILE] sockaddr.h [ edit | delete | rename | download ]
[FILE] socket.h [ edit | delete | rename | download ]
[FILE] stat.h [ edit | delete | rename | download ]
[FILE] stats.h [ edit | delete | rename | download ]
[FILE] stdio.h [ edit | delete | rename | download ]
[FILE] stdlib.h [ edit | delete | rename | download ]
[FILE] stdtime.h [ edit | delete | rename | download ]
[FILE] strerror.h [ edit | delete | rename | download ]
[FILE] string.h [ edit | delete | rename | download ]
[FILE] symtab.h [ edit | delete | rename | download ]
[FILE] syslog.h [ edit | delete | rename | download ]
[FILE] task.h [ edit | delete | rename | download ]
[FILE] taskpool.h [ edit | delete | rename | download ]
[FILE] thread.h [ edit | delete | rename | download ]
[FILE] time.h [ edit | delete | rename | download ]
[FILE] timer.h [ edit | delete | rename | download ]
[FILE] tm.h [ edit | delete | rename | download ]
[FILE] types.h [ edit | delete | rename | download ]
[FILE] util.h [ edit | delete | rename | download ]
[FILE] version.h [ edit | delete | rename | download ]
[FILE] xml.h [ edit | delete | rename | download ]

Viewing: /usr/include/bind9/isc/interfaceiter.h

/*
 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * See the COPYRIGHT file distributed with this work for additional
 * information regarding copyright ownership.
 */


#ifndef ISC_INTERFACEITER_H
#define ISC_INTERFACEITER_H 1

/*****
 ***** Module Info
 *****/

/*! \file isc/interfaceiter.h
 * \brief Iterates over the list of network interfaces.
 *
 * Interfaces whose address family is not supported are ignored and never
 * returned by the iterator.  Interfaces whose netmask, interface flags,
 * or similar cannot be obtained are also ignored, and the failure is logged.
 *
 * Standards:
 *	The API for scanning varies greatly among operating systems.
 *	This module attempts to hide the differences.
 */

/***
 *** Imports
 ***/

#include <isc/lang.h>
#include <isc/netaddr.h>
#include <isc/types.h>

/*!
 * \brief Public structure describing a network interface.
 */

struct isc_interface {
	char name[32];			/*%< Interface name, null-terminated. */
	unsigned int af;		/*%< Address family. */
	isc_netaddr_t address;		/*%< Local address. */
	isc_netaddr_t netmask;		/*%< Network mask. */
	isc_netaddr_t dstaddress; 	/*%< Destination address (point-to-point only). */
	isc_uint32_t flags;		/*%< Flags; see INTERFACE flags. */
};

/*@{*/
/*! Interface flags. */

#define INTERFACE_F_UP			0x00000001U
#define INTERFACE_F_POINTTOPOINT	0x00000002U
#define INTERFACE_F_LOOPBACK		0x00000004U
/*@}*/

/***
 *** Functions
 ***/

ISC_LANG_BEGINDECLS

isc_result_t
isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp);
/*!<
 * \brief Create an iterator for traversing the operating system's list
 * of network interfaces.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS
 * \li	#ISC_R_NOMEMORY
 *\li	Various network-related errors
 */

isc_result_t
isc_interfaceiter_first(isc_interfaceiter_t *iter);
/*!<
 * \brief Position the iterator on the first interface.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS		Success.
 *\li	#ISC_R_NOMORE		There are no interfaces.
 */

isc_result_t
isc_interfaceiter_current(isc_interfaceiter_t *iter,
			  isc_interface_t *ifdata);
/*!<
 * \brief Get information about the interface the iterator is currently
 * positioned at and store it at *ifdata.
 *
 * Requires:
 *\li 	The iterator has been successfully positioned using
 * 	isc_interface_iter_first() / isc_interface_iter_next().
 *
 * Returns:
 *\li	#ISC_R_SUCCESS		Success.
 */

isc_result_t
isc_interfaceiter_next(isc_interfaceiter_t *iter);
/*!<
 * \brief Position the iterator on the next interface.
 *
 * Requires:
 * \li	The iterator has been successfully positioned using
 * 	isc_interface_iter_first() / isc_interface_iter_next().
 *
 * Returns:
 *\li	#ISC_R_SUCCESS		Success.
 *\li	#ISC_R_NOMORE		There are no more interfaces.
 */

void
isc_interfaceiter_destroy(isc_interfaceiter_t **iterp);
/*!<
 * \brief Destroy the iterator.
 */

ISC_LANG_ENDDECLS

#endif /* ISC_INTERFACEITER_H */

Upload File: