1 #include <nuklear.h>
2 
3 #include <ui/display.h>
4 #include <ui/font.h>
5 #include <ui/window.h>
6 
7 #include <vuln/l1tf.h>
8 
9 #include "style.h"
10 
11 void
show_l1tf_tab(struct nk_context * ctx,struct style * style,struct l1tf_info * info,int flags)12 show_l1tf_tab(struct nk_context *ctx, struct style *style, struct l1tf_info *info, int flags)
13 {
14 	float ratios[] = {0.3f, 0.7f};
15 	int ret;
16 
17 	ui_set_font(ctx, style->header_font);
18 	ret = nk_tree_push(ctx, NK_TREE_TAB, "L1 Terminal Fault", flags);
19 	ui_set_font(ctx, style->font);
20 
21 	if (!ret)
22 		return;
23 
24 	nk_layout_row(ctx, NK_DYNAMIC, 20, 2, ratios);
25 	ui_set_font(ctx, style->bold_font);
26 	nk_label_wrap(ctx, "Status:");
27 	ui_set_font(ctx, style->font);
28 
29 	if (info->affected) {
30 		nk_label_colored_wrap(ctx, "Vulnerable", style->red);
31 	} else {
32 		nk_label_colored_wrap(ctx, "Not Affected", style->green);
33 	}
34 
35 	ui_set_font(ctx, style->bold_font);
36 	nk_label_wrap(ctx, "L1TF Present:");
37 	ui_set_font(ctx, style->font);
38 
39 	if (info->l1tf_present) {
40 		nk_label_colored_wrap(ctx, "Yes", style->green);
41 	} else {
42 		nk_label_colored_wrap(ctx, "No", info->affected ? style->red : style->black);
43 	}
44 
45 	ui_set_font(ctx, style->bold_font);
46 	nk_label_wrap(ctx, "PTE Inversion:");
47 	ui_set_font(ctx, style->font);
48 
49 	if (info->pte_inv) {
50 		nk_label_colored_wrap(ctx, "Yes", style->green);
51 	} else {
52 		nk_label_colored_wrap(ctx, "No", info->affected ? style->red : style->black);
53 	}
54 
55 	ui_set_font(ctx, style->bold_font);
56 	nk_label_wrap(ctx, "SMT:");
57 	ui_set_font(ctx, style->font);
58 
59 	if (info->smt_vuln) {
60 		nk_label_colored_wrap(ctx, "Vulnerable", style->red);
61 	} else {
62 		nk_label_colored_wrap(ctx, "Unaffected", info->affected ? style->green : style->black);
63 	}
64 
65 	ui_set_font(ctx, style->bold_font);
66 	nk_label_wrap(ctx, "L1d Flush Present:");
67 	ui_set_font(ctx, style->font);
68 
69 	if (info->has_l1d_flush) {
70 		nk_label_wrap(ctx, "Yes");
71 	} else {
72 		nk_label_wrap(ctx, "No");
73 	}
74 
75 	ui_set_font(ctx, style->bold_font);
76 	nk_label_wrap(ctx, "L1d Flush:");
77 	ui_set_font(ctx, style->font);
78 
79 	switch (info->l1d_flush) {
80 	case L1D_FLUSH_ALWAYS: nk_label_colored_wrap(ctx, "Always", style->green); break;
81 	case L1D_FLUSH_COND: nk_label_colored_wrap(ctx, "Conditional", style->green); break;
82 	case L1D_FLUSH_AVAIL: nk_label_colored_wrap(ctx, "Available", style->yellow); break;
83 	default: nk_label_colored_wrap(ctx, "Never", info->affected ? style->red : style->black); break;
84 	}
85 
86 	nk_tree_pop(ctx);
87 }
88