1/*-
2 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
--- 44 unchanged lines hidden (view full) ---
53 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58 * SUCH DAMAGE.
59 *
60 * @(#)ip_var.h 8.1 (Berkeley) 6/10/93
61 * $FreeBSD: head/sys/netinet6/ip6_var.h 241916 2012-10-22 21:49:56Z delphij $
62 */
63
64#ifndef _NETINET6_IP6_VAR_H_
65#define _NETINET6_IP6_VAR_H_
66
67/*
68 * IP6 reassembly queue structure. Each fragment
69 * being reassembled is attached to one of these structures.
--- 294 unchanged lines hidden (view full) ---
364#define V_ip6stealth VNET(ip6stealth)
365#endif
366
367extern struct pr_usrreqs rip6_usrreqs;
368struct sockopt;
369
370struct inpcb;
371
372int icmp6_ctloutput(struct socket *, struct sockopt *sopt);
373
374struct in6_ifaddr;
375void ip6_init(void);
376#ifdef VIMAGE
377void ip6_destroy(void);
378#endif
379int ip6proto_register(short);
380int ip6proto_unregister(short);
381
382void ip6_input(struct mbuf *);
383struct in6_ifaddr *ip6_getdstifaddr(struct mbuf *);
384void ip6_freepcbopts(struct ip6_pktopts *);
385
386int ip6_unknown_opt(u_int8_t *, struct mbuf *, int);
387char * ip6_get_prevhdr(struct mbuf *, int);
388int ip6_nexthdr(struct mbuf *, int, int, int *);
389int ip6_lasthdr(struct mbuf *, int, int, int *);
390
391#ifdef __notyet__
392struct ip6aux *ip6_findaux(struct mbuf *);
393#endif
394
395extern int (*ip6_mforward)(struct ip6_hdr *, struct ifnet *,
396 struct mbuf *);
397
398int ip6_process_hopopts(struct mbuf *, u_int8_t *, int, u_int32_t *,
399 u_int32_t *);
400struct mbuf **ip6_savecontrol_v4(struct inpcb *, struct mbuf *,
401 struct mbuf **, int *);
402void ip6_savecontrol(struct inpcb *, struct mbuf *, struct mbuf **);
403void ip6_notify_pmtu(struct inpcb *, struct sockaddr_in6 *,
404 u_int32_t *);
405int ip6_sysctl(int *, u_int, void *, size_t *, void *, size_t);
406
407void ip6_forward(struct mbuf *, int);
408
409void ip6_mloopback(struct ifnet *, struct mbuf *, struct sockaddr_in6 *);
410int ip6_output(struct mbuf *, struct ip6_pktopts *,
411 struct route_in6 *,
412 int,
413 struct ip6_moptions *, struct ifnet **,
414 struct inpcb *);
415int ip6_ctloutput(struct socket *, struct sockopt *);
416int ip6_raw_ctloutput(struct socket *, struct sockopt *);
417void ip6_initpktopts(struct ip6_pktopts *);
418int ip6_setpktopts(struct mbuf *, struct ip6_pktopts *,
419 struct ip6_pktopts *, struct ucred *, int);
420void ip6_clearpktopts(struct ip6_pktopts *, int);
421struct ip6_pktopts *ip6_copypktopts(struct ip6_pktopts *, int);
422int ip6_optlen(struct inpcb *);
423
424int route6_input(struct mbuf **, int *, int);
425
426void frag6_init(void);
427int frag6_input(struct mbuf **, int *, int);
428void frag6_slowtimo(void);
429void frag6_drain(void);
430
431void rip6_init(void);
432int rip6_input(struct mbuf **, int *, int);
433void rip6_ctlinput(int, struct sockaddr *, void *);
434int rip6_ctloutput(struct socket *, struct sockopt *);
435int rip6_output(struct mbuf *, ...);
436int rip6_usrreq(struct socket *,
437 int, struct mbuf *, struct mbuf *, struct mbuf *, struct thread *);
438
439int dest6_input(struct mbuf **, int *, int);
440int none_input(struct mbuf **, int *, int);
441
442int in6_selectsrc(struct sockaddr_in6 *, struct ip6_pktopts *,
443 struct inpcb *inp, struct route_in6 *, struct ucred *cred,
444 struct ifnet **, struct in6_addr *);
445int in6_selectroute(struct sockaddr_in6 *, struct ip6_pktopts *,
446 struct ip6_moptions *, struct route_in6 *, struct ifnet **,
447 struct rtentry **);
448int in6_selectroute_fib(struct sockaddr_in6 *, struct ip6_pktopts *,
449 struct ip6_moptions *, struct route_in6 *, struct ifnet **,
450 struct rtentry **, u_int);
451u_int32_t ip6_randomid(void);
452u_int32_t ip6_randomflowlabel(void);
453#endif /* _KERNEL */
454
455#endif /* !_NETINET6_IP6_VAR_H_ */
2 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
--- 44 unchanged lines hidden (view full) ---
53 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58 * SUCH DAMAGE.
59 *
60 * @(#)ip_var.h 8.1 (Berkeley) 6/10/93
61 * $FreeBSD: head/sys/netinet6/ip6_var.h 241916 2012-10-22 21:49:56Z delphij $
62 */
63
64#ifndef _NETINET6_IP6_VAR_H_
65#define _NETINET6_IP6_VAR_H_
66
67/*
68 * IP6 reassembly queue structure. Each fragment
69 * being reassembled is attached to one of these structures.
--- 294 unchanged lines hidden (view full) ---
364#define V_ip6stealth VNET(ip6stealth)
365#endif
366
367extern struct pr_usrreqs rip6_usrreqs;
368struct sockopt;
369
370struct inpcb;
371
372int icmp6_ctloutput(struct socket *, struct sockopt *sopt);
373
374struct in6_ifaddr;
375void ip6_init(void);
376#ifdef VIMAGE
377void ip6_destroy(void);
378#endif
379int ip6proto_register(short);
380int ip6proto_unregister(short);
381
382void ip6_input(struct mbuf *);
383struct in6_ifaddr *ip6_getdstifaddr(struct mbuf *);
384void ip6_freepcbopts(struct ip6_pktopts *);
385
386int ip6_unknown_opt(u_int8_t *, struct mbuf *, int);
387char * ip6_get_prevhdr(struct mbuf *, int);
388int ip6_nexthdr(struct mbuf *, int, int, int *);
389int ip6_lasthdr(struct mbuf *, int, int, int *);
390
391#ifdef __notyet__
392struct ip6aux *ip6_findaux(struct mbuf *);
393#endif
394
395extern int (*ip6_mforward)(struct ip6_hdr *, struct ifnet *,
396 struct mbuf *);
397
398int ip6_process_hopopts(struct mbuf *, u_int8_t *, int, u_int32_t *,
399 u_int32_t *);
400struct mbuf **ip6_savecontrol_v4(struct inpcb *, struct mbuf *,
401 struct mbuf **, int *);
402void ip6_savecontrol(struct inpcb *, struct mbuf *, struct mbuf **);
403void ip6_notify_pmtu(struct inpcb *, struct sockaddr_in6 *,
404 u_int32_t *);
405int ip6_sysctl(int *, u_int, void *, size_t *, void *, size_t);
406
407void ip6_forward(struct mbuf *, int);
408
409void ip6_mloopback(struct ifnet *, struct mbuf *, struct sockaddr_in6 *);
410int ip6_output(struct mbuf *, struct ip6_pktopts *,
411 struct route_in6 *,
412 int,
413 struct ip6_moptions *, struct ifnet **,
414 struct inpcb *);
415int ip6_ctloutput(struct socket *, struct sockopt *);
416int ip6_raw_ctloutput(struct socket *, struct sockopt *);
417void ip6_initpktopts(struct ip6_pktopts *);
418int ip6_setpktopts(struct mbuf *, struct ip6_pktopts *,
419 struct ip6_pktopts *, struct ucred *, int);
420void ip6_clearpktopts(struct ip6_pktopts *, int);
421struct ip6_pktopts *ip6_copypktopts(struct ip6_pktopts *, int);
422int ip6_optlen(struct inpcb *);
423
424int route6_input(struct mbuf **, int *, int);
425
426void frag6_init(void);
427int frag6_input(struct mbuf **, int *, int);
428void frag6_slowtimo(void);
429void frag6_drain(void);
430
431void rip6_init(void);
432int rip6_input(struct mbuf **, int *, int);
433void rip6_ctlinput(int, struct sockaddr *, void *);
434int rip6_ctloutput(struct socket *, struct sockopt *);
435int rip6_output(struct mbuf *, ...);
436int rip6_usrreq(struct socket *,
437 int, struct mbuf *, struct mbuf *, struct mbuf *, struct thread *);
438
439int dest6_input(struct mbuf **, int *, int);
440int none_input(struct mbuf **, int *, int);
441
442int in6_selectsrc(struct sockaddr_in6 *, struct ip6_pktopts *,
443 struct inpcb *inp, struct route_in6 *, struct ucred *cred,
444 struct ifnet **, struct in6_addr *);
445int in6_selectroute(struct sockaddr_in6 *, struct ip6_pktopts *,
446 struct ip6_moptions *, struct route_in6 *, struct ifnet **,
447 struct rtentry **);
448int in6_selectroute_fib(struct sockaddr_in6 *, struct ip6_pktopts *,
449 struct ip6_moptions *, struct route_in6 *, struct ifnet **,
450 struct rtentry **, u_int);
451u_int32_t ip6_randomid(void);
452u_int32_t ip6_randomflowlabel(void);
453#endif /* _KERNEL */
454
455#endif /* !_NETINET6_IP6_VAR_H_ */