X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Feui64.h;h=a9556e8507f596578a64026e6071498241457b50;hb=f79e0204d1134667d049c14f2c2ab38c9cb6a81a;hp=b8a1c28911e695431f1e628339543533dd136ecb;hpb=10a68fd183c5e16e95fce56e7b292f1436b1e714;p=ppp.git diff --git a/pppd/eui64.h b/pppd/eui64.h index b8a1c28..a9556e8 100644 --- a/pppd/eui64.h +++ b/pppd/eui64.h @@ -2,24 +2,46 @@ eui64.h - EUI64 routines for IPv6CP. Copyright (C) 1999 Tommi Komulainen - 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 - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Redistribution and use in source and binary forms are permitted + provided that the above copyright notice and this paragraph are + duplicated in all such forms and that any documentation, + advertising materials, and other materials related to such + distribution and use acknowledge that the software was developed + by Tommi Komulainen. The name of the author may not be used + to endorse or promote products derived from this software without + specific prior written permission. + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - $Id: eui64.h,v 1.2 1999/08/25 04:15:51 paulus Exp $ + $Id: eui64.h,v 1.5 2000/08/05 06:46:47 paulus Exp $ */ +#ifndef __EUI64_H__ +#define __EUI64_H__ + +#if !defined(INET6) +#error "this file should only be included when INET6 is defined" +#endif /* not defined(INET6) */ + +#if defined(SOL2) +#include + +typedef union { + uint8_t e8[8]; /* lower 64-bit IPv6 address */ + uint32_t e32[2]; /* lower 64-bit IPv6 address */ +} eui64_t; + +/* + * Declare the two below, since in.h only defines them when _KERNEL + * is declared - which shouldn't be true when dealing with user-land programs + */ +#define s6_addr8 _S6_un._S6_u8 +#define s6_addr32 _S6_un._S6_u32 + +#else /* else if not defined(SOL2) */ + /* * TODO: * @@ -32,6 +54,8 @@ typedef union u_int32_t e32[2]; } eui64_t; +#endif /* defined(SOL2) */ + #define eui64_iszero(e) (((e).e32[0] | (e).e32[1]) == 0) #define eui64_equals(e, o) (((e).e32[0] == (o).e32[0]) && \ ((e).e32[1] == (o).e32[1])) @@ -68,3 +92,6 @@ typedef union #define eui64_setlo32(e, l) eui64_set32(e, l) char *eui64_ntoa __P((eui64_t)); /* Returns ascii representation of id */ + +#endif /* __EUI64_H__ */ +