aboutsummaryrefslogtreecommitdiff
path: root/inet/netinet/icmp6.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-07-28 22:35:20 +0000
committerUlrich Drepper <drepper@redhat.com>1997-07-28 22:35:20 +0000
commit3996f34b46043ed8ea8fdc6f44377d969d64396b (patch)
tree563f433dab9b5299d81ced72885bf1e8c29b9159 /inet/netinet/icmp6.h
parent0a54e4010fe0085cd36deaff9442a7e88de3270d (diff)
downloadglibc-3996f34b46043ed8ea8fdc6f44377d969d64396b.zip
glibc-3996f34b46043ed8ea8fdc6f44377d969d64396b.tar.gz
glibc-3996f34b46043ed8ea8fdc6f44377d969d64396b.tar.bz2
1997-07-28 23:35 Ulrich Drepper <drepper@cygnus.com> * csu/gmon-start.c (__gmon_start__): Call __monstartup not monstartup. * gmon/gmon.c: Rename moncontrol to __moncontrol and monstartup to __monstartup. * gmon/sys/gmon.h: Fix prototypes. * gmon/sys/gmon_out.h: Pretty print. * gmon/bb_exit_func.c (__bb_exit_func): Use memcpy instead of bcopy. * gmon/gmon.c (__monstartup): Likewise. (write_hist): Remove dependency on 32 int. (_mcleanup): Don't call perror, use fprintf. * elf/dl-load.c: Fix handling of current directory in search path. * elf/Makefile (dl-routines): Add dl-profile. * elf/dl-profile.c: New file. * elf/dl-runtime.c (fixup): Add new parameter with address to store relocation result in to elf_machine_relplt. (profile_fixup): New function. * elf/do-rel.h (elf_dynamic_do_rel): Add new parameter with address to store relocation result in to elf_machine_relplt. * elf/dl-support.c: Define _dl_profile and _dl_profile_map. * elf/dynamic-link.h (ELF_DYNAMIC_RELOCATE): Add new parameter and call elf_machine_runtime_setup with extra argument. * elf/dl-reloc.c (_dl_relocate_object): Add new argument to ELF_DYNAMIC_RELOCATE. * elf/link.h: Add prototypes for new functions and variables. * elf/rtld.c: Parse LD_PROFILE and LD_PROFILE_OUTPUT environment variables and call _dl_start_profile if necessary. * include/sys/gmon_out.h: New file. * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Add new parameter to enable profiling. (elf_machine_rela): Add new parameter to specify place to store result in. * sysdeps/m68k/dl-machine.h: Likewise. * sysdeps/mips/dl-machine.h: Likewise. * sysdeps/mips/mips64/dl-machine.h: Likewise. * sysdeps/powerpc/dl-machine.h: Likewise. * sysdeps/sparc/dl-machine.h: Likewise. * sysdeps/sparc64/dl-machine.h: Likewise. * sysdeps/i386/dl-machine.h: Likewise. (elf_machine_runtime_setup): Setup got[2] to _dl_runtime_resolve if we do profiling. (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add code for _dl_runtime_profile. * nis/nss_compat/compat-grp.c (internal_setgrent): Set FD_CLOEXEC for stream on input file. * nis/nss_compat/compat-pwd.c (internal_setpwent): Likewise. * nis/nss_compat/compat-spwd.c (internal_setspent): Likewise. * nss/nss_db/db-XXX.c (internal_setent): Likewise. * nss/nss_db/db-alias.c (internal_setent): Likewise. * nss/nss_db/db-netgrp.c (internal_setent): Likewise. * nss/nss_files/files-XXX.c (internal_setent): Likewise. * nss/nss_files/files-alias.c (internal_setent): Likewise. * nss/nss_files/files-netgrp.c (internal_setent): Likewise. * string/string.h: Pretty print. * sysdeps/i386/fpu/bits/mathinline.h: Major update by John Bowman. Add float and long double versions. 1997-07-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/rtld.c (print_unresolved): Replace empty object name by main program name. 1997-07-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/generic/htons.c (htons): Renamed from __htons. 1997-07-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/bits/byteswap.h: New file. 1997-07-27 23:50 Philip Blundell <Philip.Blundell@pobox.com> * inet/netinet/icmp6.h: Update for new drafts of POSIX.1g and IPv6 advanced API. * inet/netinet/in.h: Likewise. * inet/netinet/ip6.h: Likewise. * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. * posix/sys/types.h: Add socklen_t. * manual/socket.texi: Document some more IPv6 things. * manual/libc.texinfo: Likewise. 1997-07-26 Andreas Jaeger <aj@arthur.rhein-neckar.de> * libc.map: Define missing symbol. 1997-07-27 14:31 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/Makefile: Add nis_findserv. * nis/lckcache.c: Fix typo. * nis/nis_call.c: Fix problems with multihomed servers. * nis/nis_findserv.c: New file. * nis/nis_intern.h: Add more prototypes. * nis/nis_lookup.c (nis_lookup): Don't try the next server if network is unreachable. * nis/nis_table.c (nis_list): Likewise. * nis/nis_ping.c (nis_ping): Use MASTER_ONLY, don't call abort() in error case. * nis/nis_util.c (__nis_finddirectory): Give the right error code back. * nis/ypclnt.c: Make sure, that all sockets are closed.
Diffstat (limited to 'inet/netinet/icmp6.h')
-rw-r--r--inet/netinet/icmp6.h270
1 files changed, 157 insertions, 113 deletions
diff --git a/inet/netinet/icmp6.h b/inet/netinet/icmp6.h
index 224fb64..38c1bc1 100644
--- a/inet/netinet/icmp6.h
+++ b/inet/netinet/icmp6.h
@@ -19,6 +19,8 @@
#ifndef _NETINET_ICMP6_H
#define _NETINET_ICMP6_H 1
+#include <inttypes.h>
+#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
@@ -29,160 +31,202 @@
#define ICMPV6_FILTER_BLOCKOTHERS 3
#define ICMPV6_FILTER_PASSONLY 4
-struct icmpv6_filter
+struct icmp6_filter
{
- u_int32_t data[8];
+ uint32_t data[8];
};
-struct icmpv6hdr
+struct icmp6_hdr
{
- u_int8_t icmpv6_type; /* type field */
- u_int8_t icmpv6_code; /* code field */
- u_int16_t icmpv6_cksum; /* checksum field */
- union
+ uint8_t icmp6_type; /* type field */
+ uint8_t icmp6_code; /* code field */
+ uint16_t icmp6_cksum; /* checksum field */
+ union
{
- u_int32_t un_data32[1]; /* type-specific field */
- u_int16_t un_data16[2]; /* type-specific field */
- u_int8_t un_data8[4]; /* type-specific field */
- } icmpv6_dataun;
- };
-
-#define icmpv6_data32 icmpv6_dataun.un_data32
-#define icmpv6_data16 icmpv6_dataun.un_data16
-#define icmpv6_data8 icmpv6_dataun.un_data8
-#define icmpv6_pptr icmpv6_data32[0] /* parameter prob */
-#define icmpv6_mtu icmpv6_data32[0] /* packet too big */
-#define icmpv6_id icmpv6_data16[0] /* echo request/reply */
-#define icmpv6_seq icmpv6_data16[1] /* echo request/reply */
-#define icmpv6_maxdelay icmpv6_data16[0] /* mcast group membership */
-
-#define ICMPV6_DEST_UNREACH 1
-#define ICMPV6_PACKET_TOOBIG 2
-#define ICMPV6_TIME_EXCEEDED 3
-#define ICMPV6_PARAMETER_PROBLEM 4
-#define ICMPV6_INFOMSG_MASK 128 /* message is info if bit set */
-#define ICMPV6_ECHOREQUEST 128
-#define ICMPV6_ECHOREPLY 129
-#define ICMPV6_MGM_QUERY 130
-#define ICMPV6_MGM_REPORT 131
-#define ICMPV6_MGM_REDUCTION 132
-
-#define ICMPV6_DEST_UNREACH_NOROUTE 0
-#define ICMPV6_DEST_UNREACH_ADMIN 1 /* administratively prohibited */
-#define ICMPV6_DEST_UNREACH_NOTNEIGHBOR 2 /* not a neighbor (and must be) */
-#define ICMPV6_DEST_UNREACH_ADDR 3
-#define ICMPV6_DEST_UNREACH_NOPORT 4
-#define ICMPV6_TIME_EXCEED_HOPS 0 /* Hop Limit == 0 in transit */
-#define ICMPV6_TIME_EXCEED_REASSEMBLY 1 /* Reassembly time out */
-#define ICMPV6_PARAMPROB_HEADER 0 /* erroneous header field */
-#define ICMPV6_PARAMPROB_NEXTHEADER 1 /* unrecognized Next Header */
-#define ICMPV6_PARAMPROB_OPTION 2 /* unrecognized option */
-
-#define ICMPV6_FILTER_WILLPASS(type, filterp) \
+ uint32_t icmp6_un_data32[1]; /* type-specific field */
+ uint16_t icmp6_un_data16[2]; /* type-specific field */
+ uint8_t icmp6_un_data8[4]; /* type-specific field */
+ } icmp6_dataun;
+ };
+
+#define icmp6_data32 icmp6_dataun.icmp6_un_data32
+#define icmp6_data16 icmp6_dataun.icmp6_un_data16
+#define icmp6_data8 icmp6_dataun.icmp6_un_data8
+#define icmp6_pptr icmp6_data32[0] /* parameter prob */
+#define icmp6_mtu icmp6_data32[0] /* packet too big */
+#define icmp6_id icmp6_data16[0] /* echo request/reply */
+#define icmp6_seq icmp6_data16[1] /* echo request/reply */
+#define icmp6_maxdelay icmp6_data16[0] /* mcast group membership */
+
+#define ICMP6_DST_UNREACH 1
+#define ICMP6_PACKET_TOO_BIG 2
+#define ICMP6_TIME_EXCEEDED 3
+#define ICMP6_PARAM_PROB 4
+
+#define ICMP6_INFOMSG_MASK 0x80 /* all informational messages */
+
+#define ICMP6_ECHO_REQUEST 128
+#define ICMP6_ECHO_REPLY 129
+#define ICMP6_MEMBERSHIP_QUERY 130
+#define ICMP6_MEMBERSHIP_REPORT 131
+#define ICMP6_MEMBERSHIP_REDUCTION 132
+
+#define ICMP6_DST_UNREACH_NOROUTE 0 /* no route to destination */
+#define ICMP6_DST_UNREACH_ADMIN 1 /* communication with destination */
+ /* administratively prohibited */
+#define ICMP6_DST_UNREACH_NOTNEIGHBOR 2 /* not a neighbor */
+#define ICMP6_DST_UNREACH_ADDR 3 /* address unreachable */
+#define ICMP6_DST_UNREACH_NOPORT 4 /* bad port */
+
+#define ICMP6_TIME_EXCEED_TRANSIT 0 /* Hop Limit == 0 in transit */
+#define ICMP6_TIME_EXCEED_REASSEMBLY 1 /* Reassembly time out */
+
+#define ICMP6_PARAMPROB_HEADER 0 /* erroneous header field */
+#define ICMP6_PARAMPROB_NEXTHEADER 1 /* unrecognized Next Header */
+#define ICMP6_PARAMPROB_OPTION 2 /* unrecognized IPv6 option */
+
+#define ICMP6_FILTER_WILLPASS(type, filterp) \
((((filterp)->data[(type) >> 5]) & (1 << ((type) & 31))) == 0)
-#define ICMPV6_FILTER_WILLBLOCK(type, filterp) \
+#define ICMP6_FILTER_WILLBLOCK(type, filterp) \
((((filterp)->data[(type) >> 5]) & (1 << ((type) & 31))) != 0)
-#define ICMPV6_FILTER_SETPASS(type, filterp) \
+#define ICMP6_FILTER_SETPASS(type, filterp) \
((((filterp)->data[(type) >> 5]) &= ~(1 << ((type) & 31))))
-#define ICMPV6_FILTER_SETBLOCK(type, filterp) \
+#define ICMP6_FILTER_SETBLOCK(type, filterp) \
((((filterp)->data[(type) >> 5]) |= (1 << ((type) & 31))))
-#define ICMPV6_FILTER_SETPASSALL(filterp) \
- memset (filterp, 0, sizeof (struct icmpv6_filter));
+#define ICMP6_FILTER_SETPASSALL(filterp) \
+ memset (filterp, 0, sizeof (struct icmp6_filter));
-#define ICMPV6_FILTER_SETBLOCKALL(filterp) \
- memset (filterp, 0xFF, sizeof (struct icmpv6_filter));
+#define ICMP6_FILTER_SETBLOCKALL(filterp) \
+ memset (filterp, 0xFF, sizeof (struct icmp6_filter));
-#define ND6_ROUTER_SOLICITATION 133
-#define ND6_ROUTER_ADVERTISEMENT 134
-#define ND6_NEIGHBOR_SOLICITATION 135
-#define ND6_NEIGHBOR_ADVERTISEMENT 136
-#define ND6_REDIRECT 137
+#define ND_ROUTER_SOLICIT 133
+#define ND_ROUTER_ADVERT 134
+#define ND_NEIGHBOR_SOLICIT 135
+#define ND_NEIGHBOR_ADVERT 136
+#define ND_REDIRECT 137
-enum nd6_option
+struct nd_router_solicit /* router solicitation */
{
- ND6_OPT_SOURCE_LINKADDR=1,
- ND6_OPT_TARGET_LINKADDR=2,
- ND6_OPT_PREFIX_INFORMATION=3,
- ND6_OPT_REDIRECTED_HEADER=4,
- ND6_OPT_MTU=5,
- ND6_OPT_ENDOFLIST=256
+ struct icmp6_hdr nd_rs_hdr;
+ /* could be followed by options */
};
-struct nd6_router_solicit /* router solicitation */
+#define nd_rs_type nd_rs_hdr.icmp6_type
+#define nd_rs_code nd_rs_hdr.icmp6_code
+#define nd_rs_cksum nd_rs_hdr.icmp6_cksum
+#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0]
+
+struct nd_router_advert /* router advertisement */
{
- struct icmpv6hdr rsol_hdr;
+ struct icmp6_hdr nd_ra_hdr;
+ uint32_t nd_ra_reachable; /* reachable time */
+ uint32_t nd_ra_retransmit; /* retransmit timer */
+ /* could be followed by options */
};
-#define rsol_type rsol_hdr.icmpv6_type
-#define rsol_code rsol_hdr.icmpv6_code
-#define rsol_cksum rsol_hdr.icmpv6_cksum
-#define rsol_reserved rsol_hdr.icmpv6_data32[0]
+#define nd_ra_type nd_ra_hdr.icmp6_type
+#define nd_ra_code nd_ra_hdr.icmp6_code
+#define nd_ra_cksum nd_ra_hdr.icmp6_cksum
+#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0]
+#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1]
+#define ND_RA_FLAG_MANAGED 0x80
+#define ND_RA_FLAG_OTHER 0x40
+#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1]
-struct nd6_router_advert
+struct nd_neighbor_solicit /* neighbor solicitation */
{
- struct icmpv6hdr radv_hdr;
- u_int32_t radv_reachable; /* reachable time */
- u_int32_t radv_retransmit; /* reachable retransmit time */
+ struct icmp6_hdr nd_ns_hdr;
+ struct in6_addr nd_ns_target; /* target address */
+ /* could be followed by options */
};
-#define radv_type radv_hdr.icmpv6_type
-#define radv_code radv_hdr.icmpv6_code
-#define radv_cksum radv_hdr.icmpv6_cksum
-#define radv_maxhoplimit radv_hdr.icmpv6_data8[0]
-#define radv_m_o_res radv_hdr.icmpv6_data8[1]
-#define ND6_RADV_M_BIT 0x80
-#define ND6_RADV_O_BIT 0x40
-#define radv_router_lifetime radv_hdr.icmpv6_data16[1]
+#define nd_ns_type nd_ns_hdr.icmp6_type
+#define nd_ns_code nd_ns_hdr.icmp6_code
+#define nd_ns_cksum nd_ns_hdr.icmp6_cksum
+#define nd_ns_reserved nd_ns_hdr.icmp6_data32[0]
-struct nd6_nsolicitation /* neighbor solicitation */
+struct nd_neighbor_advert /* neighbor advertisement */
{
- struct icmpv6hdr nsol6_hdr;
- struct in6_addr nsol6_target;
+ struct icmp6_hdr nd_na_hdr;
+ struct in6_addr nd_na_target; /* target address */
+ /* could be followed by options */
};
-struct nd6_nadvertisement /* neighbor advertisement */
+#define nd_na_type nd_na_hdr.icmp6_type
+#define nd_na_code nd_na_hdr.icmp6_code
+#define nd_na_cksum nd_na_hdr.icmp6_cksum
+#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0]
+#if BYTE_ORDER == BIG_ENDIAN
+#define ND_NA_FLAG_ROUTER 0x80000000
+#define ND_NA_FLAG_SOLICITED 0x40000000
+#define ND_NA_FLAG_OVERRIDE 0x20000000
+#else /* BYTE_ORDER == LITTLE_ENDIAN */
+#define ND_NA_FLAG_ROUTER 0x00000080
+#define ND_NA_FLAG_SOLICITED 0x00000040
+#define ND_NA_FLAG_OVERRIDE 0x00000020
+#endif
+
+struct nd_redirect /* redirect */
{
- struct icmpv6hdr nadv6_hdr;
- struct in6_addr nadv6_target;
+ struct icmp6_hdr nd_rd_hdr;
+ struct in6_addr nd_rd_target; /* target address */
+ struct in6_addr nd_rd_dst; /* destination address */
+ /* could be followed by options */
};
+
+#define nd_rd_type nd_rd_hdr.icmp6_type
+#define nd_rd_code nd_rd_hdr.icmp6_code
+#define nd_rd_cksum nd_rd_hdr.icmp6_cksum
+#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0]
-#define nadv6_flags nadv6_hdr.icmpv6_data32[0]
-#define ND6_NADVERFLAG_ISROUTER 0x80
-#define ND6_NADVERFLAG_SOLICITED 0x40
-#define ND6_NADVERFLAG_OVERRIDE 0x20
-
-struct nd6_redirect /* redirect */
+struct nd_opt_hdr /* Neighbor discovery option header */
{
- struct icmpv6hdr redirect_hdr;
- struct in6_addr redirect_target;
- struct in6_addr redirect_destination;
+ uint8_t nd_opt_type;
+ uint8_t nd_opt_len; /* in units of 8 octets */
+ /* followed by option specific data */
};
-struct nd6_opt_prefix_info /* prefix information */
+#define ND_OPT_SOURCE_LINKADDR 1
+#define ND_OPT_TARGET_LINKADDR 2
+#define ND_OPT_PREFIX_INFORMATION 3
+#define ND_OPT_REDIRECTED_HEADER 4
+#define ND_OPT_MTU 5
+
+struct nd_opt_prefix_info /* prefix information */
{
- u_int8_t opt_type;
- u_int8_t opt_length;
- u_int8_t opt_prefix_length;
- u_int8_t opt_l_a_res;
- u_int32_t opt_valid_life;
- u_int32_t opt_preferred_life;
- u_int32_t opt_reserved2;
- struct in6_addr opt_prefix;
+ uint8_t nd_opt_pi_type;
+ uint8_t nd_opt_pi_len;
+ uint8_t nd_opt_pi_prefix_len;
+ uint8_t nd_opt_pi_flags_reserved;
+ uint32_t nd_opt_pi_valid_time;
+ uint32_t nd_opt_pi_preferred_time;
+ uint32_t nd_opt_pi_reserved2;
+ struct in6_addr nd_opt_pi_prefix;
};
-#define ND6_OPT_PI_L_BIT 0x80
-#define ND6_OPT_PI_A_BIT 0x40
+#define ND_OPT_PI_FLAG_ONLINK 0x80
+#define ND_OPT_PI_FLAG_AUTO 0x40
-struct nd6_opt_mtu /* MTU option */
+struct nd_opt_rd_hdr /* redirected header */
{
- u_int8_t opt_type;
- u_int8_t opt_length;
- u_int16_t opt_reserved;
- u_int32_t opt_mtu;
+ uint8_t nd_opt_rh_type;
+ uint8_t nd_opt_rh_len;
+ uint16_t nd_opt_rh_reserved1;
+ uint32_t nd_opt_rh_reserved2;
+ /* followed by IP header and data */
};
+struct nd_opt_mtu /* MTU option */
+ {
+ uint8_t nd_opt_mtu_type;
+ uint8_t nd_opt_mtu_len;
+ uint16_t nd_opt_mtu_reserved;
+ uint32_t nd_opt_mtu_mtu;
+ };
+
+
#endif /* netinet/icmpv6.h */