OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [net/] [sctp/] [ulpevent.h] - Blame information for rev 1275

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* SCTP kernel reference Implementation
2
 * Copyright (c) 1999-2000 Cisco, Inc.
3
 * Copyright (c) 1999-2001 Motorola, Inc.
4
 * Copyright (c) 2001 International Business Machines, Corp.
5
 * Copyright (c) 2001 Intel Corp.
6
 * Copyright (c) 2001 Nokia, Inc.
7
 * Copyright (c) 2001 La Monte H.P. Yarroll
8
 *
9
 * These are the definitions needed for the sctp_ulpevent type.  The
10
 * sctp_ulpevent type is used to carry information from the state machine
11
 * upwards to the ULP.
12
 *
13
 * This file is part of the SCTP kernel reference Implementation
14
 *
15
 * The SCTP reference implementation is free software;
16
 * you can redistribute it and/or modify it under the terms of
17
 * the GNU General Public License as published by
18
 * the Free Software Foundation; either version 2, or (at your option)
19
 * any later version.
20
 *
21
 * The SCTP reference implementation is distributed in the hope that it
22
 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
23
 *                 ************************
24
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
25
 * See the GNU General Public License for more details.
26
 *
27
 * You should have received a copy of the GNU General Public License
28
 * along with GNU CC; see the file COPYING.  If not, write to
29
 * the Free Software Foundation, 59 Temple Place - Suite 330,
30
 * Boston, MA 02111-1307, USA.
31
 *
32
 * Please send any bug reports or fixes you make to the
33
 * email address(es):
34
 *    lksctp developers <lksctp-developers@lists.sourceforge.net>
35
 *
36
 * Or submit a bug report through the following website:
37
 *    http://www.sf.net/projects/lksctp
38
 *
39
 * Written or modified by:
40
 *   Jon Grimm             <jgrimm@us.ibm.com>
41
 *   La Monte H.P. Yarroll <piggy@acm.org>
42
 *   Karl Knutson          <karl@athena.chicago.il.us>
43
 *   Sridhar Samudrala     <sri@us.ibm.com>
44
 *
45
 * Any bugs reported given to us we will try to fix... any fixes shared will
46
 * be incorporated into the next SCTP release.
47
 */
48
 
49
#ifndef __sctp_ulpevent_h__
50
#define __sctp_ulpevent_h__
51
 
52
/* A structure to carry information to the ULP (e.g. Sockets API) */
53
/* Warning: This sits inside an skb.cb[] area.  Be very careful of
54
 * growing this structure as it is at the maximum limit now.
55
 */
56
struct sctp_ulpevent {
57
        struct sctp_sndrcvinfo sndrcvinfo;
58
        int msg_flags;
59
        int iif;
60
};
61
 
62
/* Retrieve the skb this event sits inside of. */
63
static inline struct sk_buff *sctp_event2skb(struct sctp_ulpevent *ev)
64
{
65
        return container_of((void *)ev, struct sk_buff, cb);
66
}
67
 
68
/* Retrieve & cast the event sitting inside the skb. */
69
static inline struct sctp_ulpevent *sctp_skb2event(struct sk_buff *skb)
70
{
71
        return (struct sctp_ulpevent *)skb->cb;
72
}
73
 
74
struct sctp_ulpevent *sctp_ulpevent_new(int size, int flags, int gfp);
75
void sctp_ulpevent_init(struct sctp_ulpevent *, int flags);
76
void sctp_ulpevent_free(struct sctp_ulpevent *);
77
int sctp_ulpevent_is_notification(const struct sctp_ulpevent *);
78
void sctp_queue_purge_ulpevents(struct sk_buff_head *list);
79
 
80
struct sctp_ulpevent *sctp_ulpevent_make_assoc_change(
81
        const struct sctp_association *asoc,
82
        __u16 flags,
83
        __u16 state,
84
        __u16 error,
85
        __u16 outbound,
86
        __u16 inbound,
87
        int gfp);
88
 
89
struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change(
90
        const struct sctp_association *asoc,
91
        const struct sockaddr_storage *aaddr,
92
        int flags,
93
        int state,
94
        int error,
95
        int gfp);
96
 
97
struct sctp_ulpevent *sctp_ulpevent_make_remote_error(
98
        const struct sctp_association *asoc,
99
        struct sctp_chunk *chunk,
100
        __u16 flags,
101
        int gfp);
102
struct sctp_ulpevent *sctp_ulpevent_make_send_failed(
103
        const struct sctp_association *asoc,
104
        struct sctp_chunk *chunk,
105
        __u16 flags,
106
        __u32 error,
107
        int gfp);
108
 
109
struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event(
110
        const struct sctp_association *asoc,
111
        __u16 flags,
112
        int gfp);
113
 
114
struct sctp_ulpevent *sctp_ulpevent_make_pdapi(
115
        const struct sctp_association *asoc,
116
        __u32 indication, int gfp);
117
 
118
struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,
119
        struct sctp_chunk *chunk,
120
        int gfp);
121
 
122
void sctp_ulpevent_read_sndrcvinfo(const struct sctp_ulpevent *event,
123
        struct msghdr *);
124
__u16 sctp_ulpevent_get_notification_type(const struct sctp_ulpevent *event);
125
 
126
/* Is this event type enabled? */
127
static inline int sctp_ulpevent_type_enabled(__u16 sn_type,
128
                                             struct sctp_event_subscribe *mask)
129
{
130
        char *amask = (char *) mask;
131
        return amask[sn_type - SCTP_SN_TYPE_BASE];
132
}
133
 
134
/* Given an event subscription, is this event enabled? */
135
static inline int sctp_ulpevent_is_enabled(const struct sctp_ulpevent *event,
136
                                           struct sctp_event_subscribe *mask)
137
{
138
        __u16 sn_type;
139
        int enabled = 1;
140
 
141
        if (sctp_ulpevent_is_notification(event)) {
142
                sn_type = sctp_ulpevent_get_notification_type(event);
143
                enabled = sctp_ulpevent_type_enabled(sn_type, mask);
144
        }
145
        return enabled;
146
}
147
 
148
#endif /* __sctp_ulpevent_h__ */
149
 
150
 
151
 
152
 
153
 
154
 
155
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.