mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-02-21 01:42:18 +00:00
Rely on please explain, don't send too many full sids
This commit is contained in:
parent
aeaeac8a79
commit
54f9d9b0e0
@ -1269,9 +1269,6 @@ int keyring_send_sas_request(struct subscriber *subscriber){
|
||||
if (debug & DEBUG_KEYRING)
|
||||
DEBUGF("Requesting SAS mapping for SID=%s", alloca_tohex_sid(subscriber->sid));
|
||||
|
||||
// always send our sid in full, it's likely this is a new peer
|
||||
my_subscriber->send_full = 1;
|
||||
|
||||
/* request mapping (send request auth-crypted). */
|
||||
overlay_mdp_frame mdp;
|
||||
memset(&mdp,0,sizeof(overlay_mdp_frame));
|
||||
|
@ -82,12 +82,6 @@ struct subscriber *find_subscriber(const unsigned char *sid, int len, int create
|
||||
ptr->subscribers[nibble]=ret;
|
||||
bcopy(sid, ret->sid, SID_SIZE);
|
||||
ret->abbreviate_len=pos;
|
||||
// always send the full sid on first use
|
||||
ret->send_full=1;
|
||||
|
||||
// always send my full sid when we hear about someone new
|
||||
if (my_subscriber)
|
||||
my_subscriber->send_full = 1;
|
||||
}
|
||||
return ptr->subscribers[nibble];
|
||||
|
||||
@ -371,28 +365,6 @@ int overlay_address_append(struct decode_context *context, struct overlay_buffer
|
||||
return 0;
|
||||
}
|
||||
|
||||
int overlay_address_append_self(struct decode_context *context, overlay_interface *interface, struct overlay_buffer *b){
|
||||
static int ticks_per_full_address = -1;
|
||||
if (ticks_per_full_address == -1) {
|
||||
ticks_per_full_address = confValueGetInt64Range("mdp.selfannounce.ticks_per_full_address", 4LL, 1LL, 1000000LL);
|
||||
INFOF("ticks_per_full_address = %d", ticks_per_full_address);
|
||||
}
|
||||
|
||||
if (!my_subscriber)
|
||||
return WHY("I don't know who I am yet");
|
||||
|
||||
if (++interface->ticks_since_sent_full_address > ticks_per_full_address){
|
||||
interface->ticks_since_sent_full_address = 0;
|
||||
my_subscriber->send_full=1;
|
||||
}
|
||||
|
||||
if (overlay_address_append(context, b, my_subscriber))
|
||||
return WHY("Could not append my sid");
|
||||
|
||||
context->sender = my_subscriber;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int add_explain_response(struct subscriber *subscriber, void *context){
|
||||
struct decode_context *response = context;
|
||||
if (!response->please_explain){
|
||||
|
@ -129,7 +129,6 @@ int overlay_broadcast_generate_address(struct broadcast *addr);
|
||||
|
||||
int overlay_broadcast_append(struct decode_context *context, struct overlay_buffer *b, struct broadcast *broadcast);
|
||||
int overlay_address_append(struct decode_context *context, struct overlay_buffer *b, struct subscriber *subscriber);
|
||||
int overlay_address_append_self(struct decode_context *context, overlay_interface *interface, struct overlay_buffer *b);
|
||||
|
||||
int overlay_address_parse(struct decode_context *context, struct overlay_buffer *b, struct broadcast *broadcast, struct subscriber **subscriber);
|
||||
int send_please_explain(struct decode_context *context, struct subscriber *source, struct subscriber *destination);
|
||||
|
@ -428,9 +428,6 @@ overlay_interface_init_socket(int interface_index)
|
||||
|
||||
INFOF("Interface %s addr %s, is up",interface->name, inet_ntoa(interface->broadcast_address.sin_addr));
|
||||
|
||||
// mark our sid to be sent in full
|
||||
if (my_subscriber)
|
||||
my_subscriber->send_full = 1;
|
||||
directory_registration();
|
||||
|
||||
return 0;
|
||||
@ -522,10 +519,6 @@ overlay_interface_init(char *name, struct in_addr src_addr, struct in_addr netma
|
||||
interface->state=INTERFACE_STATE_UP;
|
||||
INFOF("Dummy interface %s is up",interface->name);
|
||||
|
||||
// mark our sid to be sent in full
|
||||
if (my_subscriber)
|
||||
my_subscriber->send_full = 1;
|
||||
|
||||
directory_registration();
|
||||
|
||||
} else {
|
||||
|
@ -27,14 +27,15 @@ struct sockaddr_in loopback;
|
||||
|
||||
unsigned char magic_header[]={0x00, 0x01};
|
||||
|
||||
int overlay_packet_init_header(struct overlay_interface *interface, struct decode_context *context,
|
||||
struct overlay_buffer *buff){
|
||||
int overlay_packet_init_header(struct decode_context *context, struct overlay_buffer *buff){
|
||||
if (ob_append_bytes(buff,magic_header,sizeof magic_header))
|
||||
return -1;
|
||||
return overlay_address_append_self(context, interface, buff);
|
||||
if (overlay_address_append(context, buff, my_subscriber))
|
||||
return -1;
|
||||
context->sender = my_subscriber;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// a frame destined for one of our local addresses, or broadcast, has arrived. Process it.
|
||||
int process_incoming_frame(time_ms_t now, struct overlay_interface *interface, struct overlay_frame *f, struct decode_context *context){
|
||||
IN();
|
||||
|
@ -241,7 +241,7 @@ overlay_init_packet(struct outgoing_packet *packet, overlay_interface *interface
|
||||
packet->add_advertisements=1;
|
||||
ob_limitsize(packet->buffer, packet->interface->mtu);
|
||||
|
||||
overlay_packet_init_header(interface, &packet->context, packet->buffer);
|
||||
overlay_packet_init_header(&packet->context, packet->buffer);
|
||||
|
||||
if (tick){
|
||||
/* 1. Send announcement about ourselves, including one SID that we host if we host more than one SID
|
||||
|
3
serval.h
3
serval.h
@ -444,8 +444,7 @@ time_ms_t overlay_time_until_next_tick();
|
||||
int overlay_add_selfannouncement(struct decode_context *context, int interface,struct overlay_buffer *b);
|
||||
int overlay_frame_append_payload(struct decode_context *context, overlay_interface *interface,
|
||||
struct overlay_frame *p, struct subscriber *next_hop, struct overlay_buffer *b);
|
||||
int overlay_packet_init_header(struct overlay_interface *interface, struct decode_context *context,
|
||||
struct overlay_buffer *buff);
|
||||
int overlay_packet_init_header(struct decode_context *context, struct overlay_buffer *buff);
|
||||
int overlay_frame_build_header(struct decode_context *context, struct overlay_buffer *buff,
|
||||
int queue, int type, int modifiers, int ttl,
|
||||
struct broadcast *broadcast, struct subscriber *next_hop,
|
||||
|
Loading…
x
Reference in New Issue
Block a user