MCPcopy Create free account
hub / github.com/ElementsProject/lightning / gossmap_apply_localmods

Function gossmap_apply_localmods

common/gossmap.c:879–914  ·  view source on GitHub ↗

Apply localmods to this map */

Source from the content-addressed store, hash-verified

877
878/* Apply localmods to this map */
879void gossmap_apply_localmods(struct gossmap *map,
880 struct gossmap_localmods *localmods)
881{
882 size_t n = tal_count(localmods->mods);
883
884 assert(!map->local);
885 map->local = localmods->local;
886
887 for (size_t i = 0; i < n; i++) {
888 struct localmod *mod = &localmods->mods[i];
889 struct gossmap_chan *chan;
890
891 /* Find gossmap entry which this applies to. */
892 chan = gossmap_find_chan(map, &mod->scid);
893 /* If it doesn't exist, are we supposed to create a local one? */
894 if (!chan) {
895 if (mod->local_off == 0xFFFFFFFF)
896 continue;
897
898 /* Create new channel, pointing into local. */
899 chan = add_channel(map, map->map_size + mod->local_off,
900 true);
901 }
902
903 /* Save old, overwrite (keep nodeidx) */
904 for (size_t h = 0; h < 2; h++) {
905 if (!mod->updates_set[h])
906 continue;
907 mod->orig[h] = chan->half[h];
908 mod->orig_cupdate_off[h] = chan->cupdate_off[h];
909 chan->half[h] = mod->hc[h];
910 chan->half[h].nodeidx = mod->orig[h].nodeidx;
911 chan->cupdate_off[h] = 0xFFFFFFFF;
912 }
913 }
914}
915
916void gossmap_remove_localmods(struct gossmap *map,
917 const struct gossmap_localmods *localmods)

Callers 1

mainFunction · 0.85

Calls 2

gossmap_find_chanFunction · 0.85
add_channelFunction · 0.85

Tested by 1

mainFunction · 0.68