]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/blobdiff - ip/ipxfrm.c
xfrm security context support
[lisovros/iproute2_canprio.git] / ip / ipxfrm.c
index 9753822d9ba46598c9df09dabb2a66b025721afa..cc4dc803cd7207be82afd71ff843a342a0a004e7 100644 (file)
@@ -850,6 +850,20 @@ void xfrm_state_info_print(struct xfrm_usersa_info *xsinfo,
                xfrm_lifetime_print(&xsinfo->lft, &xsinfo->curlft, fp, buf);
                xfrm_stats_print(&xsinfo->stats, fp, buf);
        }
+
+       if (tb[XFRMA_SEC_CTX]) {
+               struct xfrm_user_sec_ctx *sctx;
+
+               fprintf(fp, "\tsecurity context ");
+
+               if (RTA_PAYLOAD(tb[XFRMA_SEC_CTX]) < sizeof(*sctx))
+                       fprintf(fp, "(ERROR truncated)");
+
+               sctx = (struct xfrm_user_sec_ctx *)RTA_DATA(tb[XFRMA_SEC_CTX]);
+
+               fprintf(fp, "%s %s", (char *)(sctx + 1), _SL_);
+       }
+
 }
 
 void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
@@ -862,6 +876,20 @@ void xfrm_policy_info_print(struct xfrm_userpolicy_info *xpinfo,
 
        xfrm_selector_print(&xpinfo->sel, preferred_family, fp, title);
 
+       if (tb[XFRMA_SEC_CTX]) {
+               struct xfrm_user_sec_ctx *sctx;
+
+               fprintf(fp, "\tsecurity context ");
+
+               if (RTA_PAYLOAD(tb[XFRMA_SEC_CTX]) < sizeof(*sctx))
+                       fprintf(fp, "(ERROR truncated)");
+
+               sctx = (struct xfrm_user_sec_ctx *)RTA_DATA(tb[XFRMA_SEC_CTX]);
+
+               fprintf(fp, "%s ", (char *)(sctx + 1));
+               fprintf(fp, "%s", _SL_);
+       }
+
        if (prefix)
                STRBUF_CAT(buf, prefix);
        STRBUF_CAT(buf, "\t");