/* Flag to indicate if PR-SCTP is enabled. */
        int prsctp_enable;
 
+       /* Flag to indicate if PR-CONFIG is enabled. */
+       int reconf_enable;
+
        /* Flag to idicate if SCTP-AUTH is enabled */
        int auth_enable;
 
 
        struct list_head endpoint_shared_keys;
        __u16 active_key_id;
        __u8  auth_enable:1,
-             prsctp_enable:1;
+             prsctp_enable:1,
+             reconf_enable:1;
 };
 
 /* Recover the outter endpoint structure. */
                        hostname_address:1, /* Peer understands DNS addresses? */
                        asconf_capable:1,   /* Does peer support ADDIP? */
                        prsctp_capable:1,   /* Can peer do PR-SCTP? */
+                       reconf_capable:1,   /* Can peer do RE-CONFIG? */
                        auth_capable:1;     /* Is peer doing SCTP-AUTH? */
 
                /* sack_needed : This flag indicates if the next received
 
        __u8 need_ecne:1,       /* Need to send an ECNE Chunk? */
             temp:1,            /* Is it a temporary association? */
-            prsctp_enable:1;
+            prsctp_enable:1,
+            reconf_enable:1;
 
        __u32 strreset_outseq; /* Update after receiving response */
        __u32 strreset_inseq; /* Update after receiving request */
 
 
        asoc->active_key_id = ep->active_key_id;
        asoc->prsctp_enable = ep->prsctp_enable;
+       asoc->reconf_enable = ep->reconf_enable;
 
        /* Save the hmacs and chunks list into this association */
        if (ep->auth_hmacs_list)
 
        ep->auth_hmacs_list = auth_hmacs;
        ep->auth_chunk_list = auth_chunks;
        ep->prsctp_enable = net->sctp.prsctp_enable;
+       ep->reconf_enable = net->sctp.reconf_enable;
 
        return ep;
 
 
        /* Enable PR-SCTP by default. */
        net->sctp.prsctp_enable = 1;
 
+       /* Disable RECONF by default. */
+       net->sctp.reconf_enable = 0;
+
        /* Disable AUTH by default. */
        net->sctp.auth_enable = 0;
 
 
                num_ext += 2;
        }
 
+       if (asoc->reconf_enable) {
+               extensions[num_ext] = SCTP_CID_RECONF;
+               num_ext += 1;
+       }
+
        if (sp->adaptation_ind)
                chunksize += sizeof(aiparam);
 
                num_ext += 2;
        }
 
+       if (asoc->peer.reconf_capable) {
+               extensions[num_ext] = SCTP_CID_RECONF;
+               num_ext += 1;
+       }
+
        if (sp->adaptation_ind)
                chunksize += sizeof(aiparam);
 
 
        for (i = 0; i < num_ext; i++) {
                switch (param.ext->chunks[i]) {
+               case SCTP_CID_RECONF:
+                       if (asoc->reconf_enable &&
+                           !asoc->peer.reconf_capable)
+                               asoc->peer.reconf_capable = 1;
+                       break;
                case SCTP_CID_FWD_TSN:
                        if (asoc->prsctp_enable && !asoc->peer.prsctp_capable)
                                asoc->peer.prsctp_capable = 1;