sctp_asconf.h revision 235828
196263Sobrien/*-
2169689Skan * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved.
396263Sobrien * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved.
496263Sobrien * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved.
596263Sobrien *
696263Sobrien * Redistribution and use in source and binary forms, with or without
796263Sobrien * modification, are permitted provided that the following conditions are met:
896263Sobrien *
996263Sobrien * a) Redistributions of source code must retain the above copyright notice,
1096263Sobrien *    this list of conditions and the following disclaimer.
1196263Sobrien *
1296263Sobrien * b) Redistributions in binary form must reproduce the above copyright
1396263Sobrien *    notice, this list of conditions and the following disclaimer in
1496263Sobrien *    the documentation and/or other materials provided with the distribution.
1596263Sobrien *
16169689Skan * c) Neither the name of Cisco Systems, Inc. nor the names of its
1796263Sobrien *    contributors may be used to endorse or promote products derived
1896263Sobrien *    from this software without specific prior written permission.
1996263Sobrien *
2096263Sobrien * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2196263Sobrien * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22102780Skan * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23102780Skan * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24102780Skan * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25169689Skan * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26169689Skan * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27132718Skan * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28169689Skan * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29132718Skan * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30169689Skan * THE POSSIBILITY OF SUCH DAMAGE.
31169689Skan */
32169689Skan
33132718Skan#include <sys/cdefs.h>
34132718Skan__FBSDID("$FreeBSD: head/sys/netinet/sctp_asconf.h 235828 2012-05-23 11:26:28Z tuexen $");
35132718Skan
36132718Skan#ifndef _NETINET_SCTP_ASCONF_H_
37132718Skan#define _NETINET_SCTP_ASCONF_H_
38132718Skan
39132718Skan#if defined(_KERNEL) || defined(__Userspace__)
40132718Skan
41132718Skan/*
42132718Skan * function prototypes
43169689Skan */
44169689Skanextern void sctp_asconf_cleanup(struct sctp_tcb *, struct sctp_nets *);
45169689Skan
46117395Skanextern struct mbuf *sctp_compose_asconf(struct sctp_tcb *, int *, int);
47132718Skan
48169689Skanextern void
49132718Skansctp_handle_asconf(struct mbuf *, unsigned int, struct sctp_asconf_chunk *,
50132718Skan    struct sctp_tcb *, int i);
51132718Skan
52102780Skanextern void
53169689Skansctp_handle_asconf_ack(struct mbuf *, int, struct sctp_asconf_ack_chunk *,
54132718Skan    struct sctp_tcb *, struct sctp_nets *, int *);
55132718Skan
56132718Skanextern uint32_t
57132718Skansctp_addr_mgmt_ep_sa(struct sctp_inpcb *, struct sockaddr *,
58117395Skan    uint32_t, uint32_t, struct sctp_ifa *);
59169689Skan
60169689Skan
61169689Skanextern int
62169689Skansctp_asconf_iterator_ep(struct sctp_inpcb *inp, void *ptr,
63132718Skan    uint32_t val);
64117395Skanextern void
65132718Skansctp_asconf_iterator_stcb(struct sctp_inpcb *inp,
66132718Skan    struct sctp_tcb *stcb,
67132718Skan    void *ptr, uint32_t type);
68132718Skanextern void sctp_asconf_iterator_end(void *ptr, uint32_t val);
69132718Skan
70132718Skan
71169689Skanextern int32_t
72146895Skansctp_set_primary_ip_address_sa(struct sctp_tcb *,
73169689Skan    struct sockaddr *);
74169689Skan
75169689Skanextern void
76169689Skan     sctp_set_primary_ip_address(struct sctp_ifa *ifa);
77102780Skan
78extern void
79sctp_check_address_list(struct sctp_tcb *, struct mbuf *, int, int,
80    struct sockaddr *, uint16_t, uint16_t, uint16_t, uint16_t);
81
82extern void
83     sctp_assoc_immediate_retrans(struct sctp_tcb *, struct sctp_nets *);
84extern void
85     sctp_net_immediate_retrans(struct sctp_tcb *, struct sctp_nets *);
86
87extern void
88sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb,
89    struct sctp_nets *net);
90
91extern int
92    sctp_is_addr_pending(struct sctp_tcb *, struct sctp_ifa *);
93
94#endif				/* _KERNEL */
95
96#endif				/* !_NETINET_SCTP_ASCONF_H_ */
97