iface.h revision 706e567fc5ff6b79738a5f470e5aa7b2cae76459
1706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh/*- 2706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * Copyright (c) 1998 Brian Somers <brian@Awfulhak.org> 3706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * All rights reserved. 4706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * 5706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * Redistribution and use in source and binary forms, with or without 6706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * modification, are permitted provided that the following conditions 7706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * are met: 8706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * 1. Redistributions of source code must retain the above copyright 9706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * notice, this list of conditions and the following disclaimer. 10706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * 2. Redistributions in binary form must reproduce the above copyright 11706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * notice, this list of conditions and the following disclaimer in the 12706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * documentation and/or other materials provided with the distribution. 13706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * 14706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * SUCH DAMAGE. 25706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * 26706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh * $FreeBSD: src/usr.sbin/ppp/iface.h,v 1.8.26.1 2010/12/21 17:10:29 kensmith Exp $ 27706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh */ 28706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 29706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehstruct ifa_msghdr; 30706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 31706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehstruct iface_addr { 32706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh unsigned system : 1; /* System alias ? */ 33706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh struct ncprange ifa; /* local address/mask */ 34706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh struct ncpaddr peer; /* peer address */ 35706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh}; 36706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 37706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehstruct iface { 38706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh char *name; /* Interface name (malloc'd) */ 39706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh int index; /* Interface index */ 40706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh int flags; /* Interface flags (IFF_*) */ 41706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh unsigned long mtu; /* struct tuninfo MTU */ 42706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 43706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh unsigned addrs; /* How many in_addr's */ 44706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh struct iface_addr *addr; /* Array of addresses (malloc'd) */ 45706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh}; 46706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 47706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh#define IFACE_CLEAR_ALL 0 /* Nuke 'em all */ 48706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh#define IFACE_CLEAR_ALIASES 1 /* Leave the NCP address */ 49706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 50706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh#define IFACE_ADD_LAST 0 /* Just another alias */ 51706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh#define IFACE_ADD_FIRST 1 /* The IPCP address */ 52706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh#define IFACE_FORCE_ADD 2 /* OR'd with IFACE_ADD_{FIRST,LAST} */ 53706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 54706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh#define IFACE_SYSTEM 4 /* Set/clear SYSTEM entries */ 55706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh 56706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern struct iface *iface_Create(const char *name); 57706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern void iface_Clear(struct iface *, struct ncp *, int, int); 58706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern int iface_Add(struct iface *, struct ncp *, const struct ncprange *, 59706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yeh const struct ncpaddr *, int); 60706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern int iface_Delete(struct iface *, struct ncp *, const struct ncpaddr *); 61706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern int iface_Show(struct cmdargs const *); 62706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern int iface_SetFlags(const char *, int); 63706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern int iface_ClearFlags(const char *, int); 64706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern void iface_Destroy(struct iface *); 65706e567fc5ff6b79738a5f470e5aa7b2cae76459Chia-chi Yehextern void iface_ParseHdr(struct ifa_msghdr *, struct sockaddr *[RTAX_MAX]); 66