Reorganize source tree to use single autotools instance
[vpp.git] / src / vnet / ipsec / ipsec_format.c
1 /*
2  * decap.c : IPSec tunnel support
3  *
4  * Copyright (c) 2015 Cisco and/or its affiliates.
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #include <vnet/vnet.h>
19 #include <vnet/api_errno.h>
20 #include <vnet/ip/ip.h>
21 #include <vnet/interface.h>
22
23 #include <vnet/ipsec/ipsec.h>
24
25 u8 *
26 format_ipsec_policy_action (u8 * s, va_list * args)
27 {
28   u32 i = va_arg (*args, u32);
29   char *t = 0;
30
31   switch (i)
32     {
33 #define _(v,f,str) case IPSEC_POLICY_ACTION_##f: t = str; break;
34       foreach_ipsec_policy_action
35 #undef _
36     default:
37       s = format (s, "unknown");
38     }
39   s = format (s, "%s", t);
40   return s;
41 }
42
43 uword
44 unformat_ipsec_policy_action (unformat_input_t * input, va_list * args)
45 {
46   u32 *r = va_arg (*args, u32 *);
47
48   if (0);
49 #define _(v,f,s) else if (unformat (input, s)) *r = IPSEC_POLICY_ACTION_##f;
50   foreach_ipsec_policy_action
51 #undef _
52     else
53     return 0;
54   return 1;
55 }
56
57 u8 *
58 format_ipsec_crypto_alg (u8 * s, va_list * args)
59 {
60   u32 i = va_arg (*args, u32);
61   u8 *t = 0;
62
63   switch (i)
64     {
65 #define _(v,f,str) case IPSEC_CRYPTO_ALG_##f: t = (u8 *) str; break;
66       foreach_ipsec_crypto_alg
67 #undef _
68     default:
69       s = format (s, "unknown");
70     }
71   s = format (s, "%s", t);
72   return s;
73 }
74
75 uword
76 unformat_ipsec_crypto_alg (unformat_input_t * input, va_list * args)
77 {
78   u32 *r = va_arg (*args, u32 *);
79
80   if (0);
81 #define _(v,f,s) else if (unformat (input, s)) *r = IPSEC_CRYPTO_ALG_##f;
82   foreach_ipsec_crypto_alg
83 #undef _
84     else
85     return 0;
86   return 1;
87 }
88
89 u8 *
90 format_ipsec_integ_alg (u8 * s, va_list * args)
91 {
92   u32 i = va_arg (*args, u32);
93   u8 *t = 0;
94
95   switch (i)
96     {
97 #define _(v,f,str) case IPSEC_INTEG_ALG_##f: t = (u8 *) str; break;
98       foreach_ipsec_integ_alg
99 #undef _
100     default:
101       s = format (s, "unknown");
102     }
103   s = format (s, "%s", t);
104   return s;
105 }
106
107 uword
108 unformat_ipsec_integ_alg (unformat_input_t * input, va_list * args)
109 {
110   u32 *r = va_arg (*args, u32 *);
111
112   if (0);
113 #define _(v,f,s) else if (unformat (input, s)) *r = IPSEC_INTEG_ALG_##f;
114   foreach_ipsec_integ_alg
115 #undef _
116     else
117     return 0;
118   return 1;
119 }
120
121 u8 *
122 format_ipsec_replay_window (u8 * s, va_list * args)
123 {
124   u64 w = va_arg (*args, u64);
125   u8 i;
126
127   for (i = 0; i < 64; i++)
128     {
129       s = format (s, "%u", w & (1ULL << i) ? 1 : 0);
130     }
131
132   return s;
133 }
134
135 /*
136  * fd.io coding-style-patch-verification: ON
137  *
138  * Local Variables:
139  * eval: (c-set-style "gnu")
140  * End:
141  */