*/
 
 enum sctp_sinfo_flags {
-       MSG_UNORDERED = 1,  /* Send/receive message unordered. */
-       MSG_ADDR_OVER = 2,  /* Override the primary destination. */
-       MSG_ABORT=4,        /* Send an ABORT message to the peer. */
-       /* MSG_EOF is already defined per socket.h */
+       SCTP_UNORDERED = 1,  /* Send/receive message unordered. */
+       SCTP_ADDR_OVER = 2,  /* Override the primary destination. */
+       SCTP_ABORT=4,        /* Send an ABORT message to the peer. */
+       SCTP_EOF=MSG_FIN,    /* Initiate graceful shutdown process. */  
 };
 
 
 
        SCTP_DEBUG_PRINTK("msg_len: %zu, sinfo_flags: 0x%x\n",
                          msg_len, sinfo_flags);
 
-       /* MSG_EOF or MSG_ABORT cannot be set on a TCP-style socket. */
-       if (sctp_style(sk, TCP) && (sinfo_flags & (MSG_EOF | MSG_ABORT))) {
+       /* SCTP_EOF or SCTP_ABORT cannot be set on a TCP-style socket. */
+       if (sctp_style(sk, TCP) && (sinfo_flags & (SCTP_EOF | SCTP_ABORT))) {
                err = -EINVAL;
                goto out_nounlock;
        }
 
-       /* If MSG_EOF is set, no data can be sent. Disallow sending zero
-        * length messages when MSG_EOF|MSG_ABORT is not set.
-        * If MSG_ABORT is set, the message length could be non zero with
+       /* If SCTP_EOF is set, no data can be sent. Disallow sending zero
+        * length messages when SCTP_EOF|SCTP_ABORT is not set.
+        * If SCTP_ABORT is set, the message length could be non zero with
         * the msg_iov set to the user abort reason.
         */
-       if (((sinfo_flags & MSG_EOF) && (msg_len > 0)) ||
-           (!(sinfo_flags & (MSG_EOF|MSG_ABORT)) && (msg_len == 0))) {
+       if (((sinfo_flags & SCTP_EOF) && (msg_len > 0)) ||
+           (!(sinfo_flags & (SCTP_EOF|SCTP_ABORT)) && (msg_len == 0))) {
                err = -EINVAL;
                goto out_nounlock;
        }
 
-       /* If MSG_ADDR_OVER is set, there must be an address
+       /* If SCTP_ADDR_OVER is set, there must be an address
         * specified in msg_name.
         */
-       if ((sinfo_flags & MSG_ADDR_OVER) && (!msg->msg_name)) {
+       if ((sinfo_flags & SCTP_ADDR_OVER) && (!msg->msg_name)) {
                err = -EINVAL;
                goto out_nounlock;
        }
                        goto out_unlock;
                }
 
-               if (sinfo_flags & MSG_EOF) {
+               if (sinfo_flags & SCTP_EOF) {
                        SCTP_DEBUG_PRINTK("Shutting down association: %p\n",
                                          asoc);
                        sctp_primitive_SHUTDOWN(asoc, NULL);
                        err = 0;
                        goto out_unlock;
                }
-               if (sinfo_flags & MSG_ABORT) {
+               if (sinfo_flags & SCTP_ABORT) {
                        SCTP_DEBUG_PRINTK("Aborting association: %p\n", asoc);
                        sctp_primitive_ABORT(asoc, msg);
                        err = 0;
        if (!asoc) {
                SCTP_DEBUG_PRINTK("There is no association yet.\n");
 
-               if (sinfo_flags & (MSG_EOF | MSG_ABORT)) {
+               if (sinfo_flags & (SCTP_EOF | SCTP_ABORT)) {
                        err = -EINVAL;
                        goto out_unlock;
                }
 
        /* If an address is passed with the sendto/sendmsg call, it is used
         * to override the primary destination address in the TCP model, or
-        * when MSG_ADDR_OVER flag is set in the UDP model.
+        * when SCTP_ADDR_OVER flag is set in the UDP model.
         */
        if ((sctp_style(sk, TCP) && msg_name) ||
-           (sinfo_flags & MSG_ADDR_OVER)) {
+           (sinfo_flags & SCTP_ADDR_OVER)) {
                chunk_tp = sctp_assoc_lookup_paddr(asoc, &to);
                if (!chunk_tp) {
                        err = -EINVAL;
 
                        /* Minimally, validate the sinfo_flags. */
                        if (cmsgs->info->sinfo_flags &
-                           ~(MSG_UNORDERED | MSG_ADDR_OVER |
-                             MSG_ABORT | MSG_EOF))
+                           ~(SCTP_UNORDERED | SCTP_ADDR_OVER |
+                             SCTP_ABORT | SCTP_EOF))
                                return -EINVAL;
                        break;
 
 
        event->ssn = ntohs(chunk->subh.data_hdr->ssn);
        event->ppid = chunk->subh.data_hdr->ppid;
        if (chunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) {
-               event->flags |= MSG_UNORDERED;
+               event->flags |= SCTP_UNORDERED;
                event->cumtsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map);
        }
        event->tsn = ntohl(chunk->subh.data_hdr->tsn);
         *
         * recvmsg() flags:
         *
-        * MSG_UNORDERED - This flag is present when the message was sent
+        * SCTP_UNORDERED - This flag is present when the message was sent
         *                 non-ordered.
         */
        sinfo.sinfo_flags = event->flags;
         * This field will hold the current cumulative TSN as
         * known by the underlying SCTP layer.  Note this field is
         * ignored when sending and only valid for a receive
-        * operation when sinfo_flags are set to MSG_UNORDERED.
+        * operation when sinfo_flags are set to SCTP_UNORDERED.
         */
        sinfo.sinfo_cumtsn = event->cumtsn;
        /* sinfo_assoc_id: sizeof (sctp_assoc_t)