diff options
Diffstat (limited to 'net/sctp/ulpevent.c')
-rw-r--r-- | net/sctp/ulpevent.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/net/sctp/ulpevent.c b/net/sctp/ulpevent.c index 5dc094b9732d..2c17c7efad46 100644 --- a/net/sctp/ulpevent.c +++ b/net/sctp/ulpevent.c | |||
@@ -813,6 +813,43 @@ fail: | |||
813 | return NULL; | 813 | return NULL; |
814 | } | 814 | } |
815 | 815 | ||
816 | struct sctp_ulpevent *sctp_ulpevent_make_authkey( | ||
817 | const struct sctp_association *asoc, __u16 key_id, | ||
818 | __u32 indication, gfp_t gfp) | ||
819 | { | ||
820 | struct sctp_ulpevent *event; | ||
821 | struct sctp_authkey_event *ak; | ||
822 | struct sk_buff *skb; | ||
823 | |||
824 | event = sctp_ulpevent_new(sizeof(struct sctp_authkey_event), | ||
825 | MSG_NOTIFICATION, gfp); | ||
826 | if (!event) | ||
827 | goto fail; | ||
828 | |||
829 | skb = sctp_event2skb(event); | ||
830 | ak = (struct sctp_authkey_event *) | ||
831 | skb_put(skb, sizeof(struct sctp_authkey_event)); | ||
832 | |||
833 | ak->auth_type = SCTP_AUTHENTICATION_EVENT; | ||
834 | ak->auth_flags = 0; | ||
835 | ak->auth_length = sizeof(struct sctp_authkey_event); | ||
836 | |||
837 | ak->auth_keynumber = key_id; | ||
838 | ak->auth_altkeynumber = 0; | ||
839 | ak->auth_indication = indication; | ||
840 | |||
841 | /* | ||
842 | * The association id field, holds the identifier for the association. | ||
843 | */ | ||
844 | sctp_ulpevent_set_owner(event, asoc); | ||
845 | ak->auth_assoc_id = sctp_assoc2id(asoc); | ||
846 | |||
847 | return event; | ||
848 | fail: | ||
849 | return NULL; | ||
850 | } | ||
851 | |||
852 | |||
816 | /* Return the notification type, assuming this is a notification | 853 | /* Return the notification type, assuming this is a notification |
817 | * event. | 854 | * event. |
818 | */ | 855 | */ |