18c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/*-
28c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved.
3ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved.
4ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved.
58c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *
68c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Redistribution and use in source and binary forms, with or without
78c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * modification, are permitted provided that the following conditions are met:
88c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *
98c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * a) Redistributions of source code must retain the above copyright notice,
100ac02f34d6041cd0018437596a5a9a94685e6919tuexen *    this list of conditions and the following disclaimer.
118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *
128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * b) Redistributions in binary form must reproduce the above copyright
138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *    notice, this list of conditions and the following disclaimer in
140ac02f34d6041cd0018437596a5a9a94685e6919tuexen *    the documentation and/or other materials provided with the distribution.
158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *
168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * c) Neither the name of Cisco Systems, Inc. nor the names of its
178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *    contributors may be used to endorse or promote products derived
188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *    from this software without specific prior written permission.
198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen *
208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THE POSSIBILITY OF SUCH DAMAGE.
318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */
328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen
338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifdef __FreeBSD__
348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/cdefs.h>
351252c73fc5c1fd7e181b8b11081cc442dec13858t__FBSDID("$FreeBSD: head/sys/netinet/sctp_peeloff.h 243516 2012-11-25 14:25:08Z tuexen $");
368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif
378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen
38ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen#ifndef _NETINET_SCTP_PEELOFF_H_
39ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen#define _NETINET_SCTP_PEELOFF_H_
408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(HAVE_SCTP_PEELOFF_SOCKOPT)
418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* socket option peeloff */
428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_peeloff_opt {
438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if !defined(__Windows__)
448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen	int s;
458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else
468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen	HANDLE s;
478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif
488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen	sctp_assoc_t assoc_id;
498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if !defined(__Windows__)
508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen	int new_sd;
518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else
528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen	HANDLE new_sd;
538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif
548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen};
558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif /* HAVE_SCTP_PEELOFF_SOCKOPT */
568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(_KERNEL)
578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_can_peel_off(struct socket *, sctp_assoc_t);
588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_do_peeloff(struct socket *, struct socket *, sctp_assoc_t);
598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(HAVE_SCTP_PEELOFF_SOCKOPT)
601252c73fc5c1fd7e181b8b11081cc442dec13858tstruct socket *sctp_get_peeloff(struct socket *, sctp_assoc_t, int *);
618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_peeloff_option(struct proc *p, struct sctp_peeloff_opt *peeloff);
621252c73fc5c1fd7e181b8b11081cc442dec13858t#endif /* HAVE_SCTP_PEELOFF_SOCKOPT */
631252c73fc5c1fd7e181b8b11081cc442dec13858t#endif /* _KERNEL */
641252c73fc5c1fd7e181b8b11081cc442dec13858t#if defined(__Userspace__)
651252c73fc5c1fd7e181b8b11081cc442dec13858tint sctp_can_peel_off(struct socket *, sctp_assoc_t);
661252c73fc5c1fd7e181b8b11081cc442dec13858tint sctp_do_peeloff(struct socket *, struct socket *, sctp_assoc_t);
671252c73fc5c1fd7e181b8b11081cc442dec13858t#endif /* __Userspace__ */
681252c73fc5c1fd7e181b8b11081cc442dec13858t#endif /* _NETINET_SCTP_PEELOFF_H_ */
69