diff options
author | t3sserakt <t3ss@posteo.de> | 2022-03-17 15:12:06 +0100 |
---|---|---|
committer | t3sserakt <t3ss@posteo.de> | 2022-03-17 15:12:06 +0100 |
commit | 8d41efc36bec5bc5ec29278a365d5a63d7349084 (patch) | |
tree | 99177b1b5400df5ae7180c2af1f47408cace1034 /src/gns/plugin_gnsrecord_gns.c | |
parent | 95a1edacccd9b3bf769a144a12d41946d0ac25dc (diff) | |
parent | ea4a5dd6ca3d62f852b5c2de94071b7fc8f0544c (diff) | |
download | gnunet-8d41efc36bec5bc5ec29278a365d5a63d7349084.tar.gz gnunet-8d41efc36bec5bc5ec29278a365d5a63d7349084.zip |
Merge branch 'master' of ssh://git.gnunet.org/gnunet
Diffstat (limited to 'src/gns/plugin_gnsrecord_gns.c')
-rw-r--r-- | src/gns/plugin_gnsrecord_gns.c | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/src/gns/plugin_gnsrecord_gns.c b/src/gns/plugin_gnsrecord_gns.c index 391144925..dc7ffa9b2 100644 --- a/src/gns/plugin_gnsrecord_gns.c +++ b/src/gns/plugin_gnsrecord_gns.c | |||
@@ -64,8 +64,7 @@ gns_value_to_string (void *cls, | |||
64 | return GNUNET_IDENTITY_public_key_to_string (&pk); | 64 | return GNUNET_IDENTITY_public_key_to_string (&pk); |
65 | 65 | ||
66 | case GNUNET_GNSRECORD_TYPE_NICK: | 66 | case GNUNET_GNSRECORD_TYPE_NICK: |
67 | return GNUNET_strndup (data, data_size); | 67 | case GNUNET_GNSRECORD_TYPE_REDIRECT: |
68 | |||
69 | case GNUNET_GNSRECORD_TYPE_LEHO: | 68 | case GNUNET_GNSRECORD_TYPE_LEHO: |
70 | return GNUNET_strndup (data, data_size); | 69 | return GNUNET_strndup (data, data_size); |
71 | 70 | ||
@@ -133,7 +132,9 @@ gns_value_to_string (void *cls, | |||
133 | GNUNET_free (ival); | 132 | GNUNET_free (ival); |
134 | return box_str; | 133 | return box_str; |
135 | } | 134 | } |
136 | 135 | case GNUNET_GNSRECORD_TYPE_TOMBSTONE: { | |
136 | return GNUNET_strdup (_("This is a memento of an older block for internal maintenance.")); | ||
137 | } | ||
137 | default: | 138 | default: |
138 | return NULL; | 139 | return NULL; |
139 | } | 140 | } |
@@ -184,16 +185,13 @@ gns_string_to_value (void *cls, | |||
184 | if (record_type != type) | 185 | if (record_type != type) |
185 | { | 186 | { |
186 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 187 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
187 | _("Record type does not match parsed record type\n")); | 188 | _ ("Record type does not match parsed record type\n")); |
188 | return GNUNET_SYSERR; | 189 | return GNUNET_SYSERR; |
189 | } | 190 | } |
190 | return GNUNET_OK; | 191 | return GNUNET_OK; |
191 | 192 | ||
192 | case GNUNET_GNSRECORD_TYPE_NICK: | 193 | case GNUNET_GNSRECORD_TYPE_NICK: |
193 | *data = GNUNET_strdup (s); | 194 | case GNUNET_GNSRECORD_TYPE_REDIRECT: |
194 | *data_size = strlen (s); | ||
195 | return GNUNET_OK; | ||
196 | |||
197 | case GNUNET_GNSRECORD_TYPE_LEHO: | 195 | case GNUNET_GNSRECORD_TYPE_LEHO: |
198 | *data = GNUNET_strdup (s); | 196 | *data = GNUNET_strdup (s); |
199 | *data_size = strlen (s); | 197 | *data_size = strlen (s); |
@@ -301,6 +299,12 @@ gns_string_to_value (void *cls, | |||
301 | GNUNET_free (bval); | 299 | GNUNET_free (bval); |
302 | return GNUNET_OK; | 300 | return GNUNET_OK; |
303 | } | 301 | } |
302 | case GNUNET_GNSRECORD_TYPE_TOMBSTONE: { | ||
303 | *data_size = 0; | ||
304 | *data = NULL; | ||
305 | return GNUNET_OK; | ||
306 | } | ||
307 | |||
304 | 308 | ||
305 | default: | 309 | default: |
306 | return GNUNET_SYSERR; | 310 | return GNUNET_SYSERR; |
@@ -317,12 +321,16 @@ static struct | |||
317 | const char *name; | 321 | const char *name; |
318 | uint32_t number; | 322 | uint32_t number; |
319 | } gns_name_map[] = { { "PKEY", GNUNET_GNSRECORD_TYPE_PKEY }, | 323 | } gns_name_map[] = { { "PKEY", GNUNET_GNSRECORD_TYPE_PKEY }, |
320 | { "EDKEY", GNUNET_GNSRECORD_TYPE_PKEY }, | 324 | { "EDKEY", GNUNET_GNSRECORD_TYPE_EDKEY }, |
321 | { "NICK", GNUNET_GNSRECORD_TYPE_NICK }, | 325 | { "NICK", GNUNET_GNSRECORD_TYPE_NICK }, |
322 | { "LEHO", GNUNET_GNSRECORD_TYPE_LEHO }, | 326 | { "LEHO", GNUNET_GNSRECORD_TYPE_LEHO }, |
323 | { "VPN", GNUNET_GNSRECORD_TYPE_VPN }, | 327 | { "VPN", GNUNET_GNSRECORD_TYPE_VPN }, |
324 | { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS }, | 328 | { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS }, |
325 | { "BOX", GNUNET_GNSRECORD_TYPE_BOX }, | 329 | { "BOX", GNUNET_GNSRECORD_TYPE_BOX }, |
330 | { "REDIRECT", GNUNET_GNSRECORD_TYPE_REDIRECT }, | ||
331 | /* Tombstones should never be added manually | ||
332 | * so this makes sense, kind of */ | ||
333 | { "\u271E", GNUNET_GNSRECORD_TYPE_TOMBSTONE }, | ||
326 | { NULL, UINT32_MAX } }; | 334 | { NULL, UINT32_MAX } }; |
327 | 335 | ||
328 | 336 | ||
@@ -365,6 +373,19 @@ gns_number_to_typename (void *cls, uint32_t type) | |||
365 | } | 373 | } |
366 | 374 | ||
367 | 375 | ||
376 | static enum GNUNET_GenericReturnValue | ||
377 | gns_is_critical (void *cls, uint32_t type) | ||
378 | { | ||
379 | return ((type == GNUNET_GNSRECORD_TYPE_PKEY) || | ||
380 | (type == GNUNET_GNSRECORD_TYPE_EDKEY) || | ||
381 | (type == GNUNET_GNSRECORD_TYPE_GNS2DNS) || | ||
382 | (type == GNUNET_GNSRECORD_TYPE_REDIRECT) ? | ||
383 | GNUNET_YES : GNUNET_NO); | ||
384 | } | ||
385 | |||
386 | |||
387 | |||
388 | |||
368 | /** | 389 | /** |
369 | * Entry point for the plugin. | 390 | * Entry point for the plugin. |
370 | * | 391 | * |
@@ -381,6 +402,7 @@ libgnunet_plugin_gnsrecord_gns_init (void *cls) | |||
381 | api->string_to_value = &gns_string_to_value; | 402 | api->string_to_value = &gns_string_to_value; |
382 | api->typename_to_number = &gns_typename_to_number; | 403 | api->typename_to_number = &gns_typename_to_number; |
383 | api->number_to_typename = &gns_number_to_typename; | 404 | api->number_to_typename = &gns_number_to_typename; |
405 | api->is_critical = &gns_is_critical; | ||
384 | return api; | 406 | return api; |
385 | } | 407 | } |
386 | 408 | ||