aboutsummaryrefslogtreecommitdiff
path: root/src/gns/plugin_gnsrecord_gns.c
diff options
context:
space:
mode:
authort3sserakt <t3ss@posteo.de>2022-03-17 15:12:06 +0100
committert3sserakt <t3ss@posteo.de>2022-03-17 15:12:06 +0100
commit8d41efc36bec5bc5ec29278a365d5a63d7349084 (patch)
tree99177b1b5400df5ae7180c2af1f47408cace1034 /src/gns/plugin_gnsrecord_gns.c
parent95a1edacccd9b3bf769a144a12d41946d0ac25dc (diff)
parentea4a5dd6ca3d62f852b5c2de94071b7fc8f0544c (diff)
downloadgnunet-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.c40
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
376static enum GNUNET_GenericReturnValue
377gns_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