aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-03-19 15:54:06 -0400
committerSteven Rostedt <rostedt@goodmis.org>2010-03-19 15:54:06 -0400
commit1bb8667937103dec4184aed02140a848b7988a1d (patch)
treec924979eeb8d29144ef30ef204df535610137ff4
parent730013abbeb77bdf887b721c5b9ac048fa69a165 (diff)
trace-cmd: Move the printing of the mac address into its own function
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--parse-events.c52
1 files changed, 29 insertions, 23 deletions
diff --git a/parse-events.c b/parse-events.c
index af4a238..fa4d16b 100644
--- a/parse-events.c
+++ b/parse-events.c
@@ -3139,6 +3139,34 @@ get_bprint_format(void *data, int size __unused, struct event_format *event)
3139 return format; 3139 return format;
3140} 3140}
3141 3141
3142static void print_mac_arg(struct trace_seq *s, int mac, void *data,
3143 struct event_format *event, struct print_arg *arg)
3144{
3145 unsigned char *buf;
3146 char *fmt = "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x";
3147
3148 if (arg->type != PRINT_FIELD) {
3149 trace_seq_printf(s, "ARG TYPE NOT FIELD BUT %d",
3150 arg->type);
3151 return;
3152 }
3153
3154 if (mac == 'm')
3155 fmt = "%.2x%.2x%.2x%.2x%.2x%.2x";
3156 if (!arg->field.field) {
3157 arg->field.field =
3158 pevent_find_any_field(event, arg->field.name);
3159 if (!arg->field.field)
3160 die("field %s not found", arg->field.name);
3161 }
3162 if (arg->field.field->size != 6) {
3163 trace_seq_printf(s, "INVALIDMAC");
3164 return;
3165 }
3166 buf = data + arg->field.field->offset;
3167 trace_seq_printf(s, fmt, buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
3168}
3169
3142static void pretty_print(struct trace_seq *s, void *data, int size, struct event_format *event) 3170static void pretty_print(struct trace_seq *s, void *data, int size, struct event_format *event)
3143{ 3171{
3144 struct pevent *pevent = event->pevent; 3172 struct pevent *pevent = event->pevent;
@@ -3224,29 +3252,7 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
3224 ptr++; 3252 ptr++;
3225 show_func = *ptr; 3253 show_func = *ptr;
3226 } else if (*(ptr+1) == 'M' || *(ptr+1) == 'm') { 3254 } else if (*(ptr+1) == 'M' || *(ptr+1) == 'm') {
3227 unsigned char *buf; 3255 print_mac_arg(s, *(ptr+1), data, event, arg);
3228 char *fmt = "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x";
3229
3230 if (arg->type != PRINT_FIELD) {
3231 trace_seq_printf(s, "ARG TYPE NOT FIELD BUT %d",
3232 arg->type);
3233 break;
3234 }
3235
3236 if (*(ptr+1) == 'm')
3237 fmt = "%.2x%.2x%.2x%.2x%.2x%.2x";
3238 if (!arg->field.field) {
3239 arg->field.field =
3240 pevent_find_any_field(event, arg->field.name);
3241 if (!arg->field.field)
3242 die("field %s not found", arg->field.name);
3243 }
3244 if (arg->field.field->size != 6) {
3245 trace_seq_printf(s, "INVALIDMAC");
3246 break;
3247 }
3248 buf = data + arg->field.field->offset;
3249 trace_seq_printf(s, fmt, buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
3250 ptr++; 3256 ptr++;
3251 break; 3257 break;
3252 } 3258 }