123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- #include <linux/types.h>
- #include <linux/list.h> /* For struct list_head */
- #include <linux/socket.h>
- #include <linux/ip.h>
- #include <linux/time.h> /* For struct timeval */
- #include <linux/gfp.h>
- #include <net/sock.h>
- #include <net/sctp/sctp.h>
- #include <net/sctp/sm.h>
- #define DECLARE_PRIMITIVE(name) \
- \
- int sctp_primitive_ ## name(struct net *net, struct sctp_association *asoc, \
- void *arg) { \
- int error = 0; \
- sctp_event_t event_type; sctp_subtype_t subtype; \
- sctp_state_t state; \
- struct sctp_endpoint *ep; \
- \
- event_type = SCTP_EVENT_T_PRIMITIVE; \
- subtype = SCTP_ST_PRIMITIVE(SCTP_PRIMITIVE_ ## name); \
- state = asoc ? asoc->state : SCTP_STATE_CLOSED; \
- ep = asoc ? asoc->ep : NULL; \
- \
- error = sctp_do_sm(net, event_type, subtype, state, ep, asoc, \
- arg, GFP_KERNEL); \
- return error; \
- }
- DECLARE_PRIMITIVE(ASSOCIATE)
- DECLARE_PRIMITIVE(SHUTDOWN);
- DECLARE_PRIMITIVE(ABORT);
- DECLARE_PRIMITIVE(SEND);
- DECLARE_PRIMITIVE(REQUESTHEARTBEAT);
- DECLARE_PRIMITIVE(ASCONF);
|