LCOV - code coverage report
Current view: top level - flamenco/gossip - fd_gossip_txbuild.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 26 0.0 %
Date: 2026-03-19 18:19:27 Functions: 0 3 0.0 %

          Line data    Source code
       1             : #include "fd_gossip_txbuild.h"
       2             : #include "fd_gossip_message.h"
       3             : 
       4             : #include "../../util/log/fd_log.h"
       5             : 
       6             : struct __attribute__((packed)) crds_val_hdr {
       7             :   uchar sig[ 64UL ];
       8             :   uint  tag; /* CRDS value tag */
       9             : };
      10             : 
      11             : typedef struct crds_val_hdr crds_val_hdr_t;
      12             : 
      13             : struct __attribute__((packed)) crds_msg {
      14             :   uint msg_type;
      15             :   uchar identity_pubkey[ 32UL ];
      16             :   ulong crds_len;
      17             :   uchar crds[ ];
      18             : };
      19             : 
      20             : typedef struct crds_msg crds_msg_t;
      21             : 
      22             : void
      23             : fd_gossip_txbuild_init( fd_gossip_txbuild_t * txbuild,
      24             :                         uchar const *         identity_pubkey,
      25           0 :                         uchar                 msg_type ) {
      26           0 :   txbuild->tag = msg_type;
      27           0 :   txbuild->bytes_len = 44UL; /* offsetof( crds_msg_t, crds ) */
      28           0 :   txbuild->crds_len = 0UL;
      29             : 
      30           0 :   crds_msg_t * msg = (crds_msg_t *)txbuild->bytes;
      31           0 :   msg->msg_type = msg_type;
      32           0 :   fd_memcpy( msg->identity_pubkey, identity_pubkey, 32UL );
      33           0 :   msg->crds_len = 0UL;
      34           0 : }
      35             : 
      36             : int
      37             : fd_gossip_txbuild_can_fit( fd_gossip_txbuild_t const * txbuild,
      38           0 :                            ulong                       crds_len ) {
      39           0 :   return crds_len<=(sizeof(txbuild->bytes)-txbuild->bytes_len);
      40           0 : }
      41             : 
      42             : void
      43             : fd_gossip_txbuild_append( fd_gossip_txbuild_t * txbuild,
      44             :                           ulong                 crds_len,
      45           0 :                           uchar const *         crds ) {
      46           0 :   FD_TEST( crds_len<=FD_GOSSIP_VALUE_MAX_SZ );
      47           0 :   FD_TEST( fd_gossip_txbuild_can_fit( txbuild, crds_len ) );
      48           0 :   FD_TEST( txbuild->crds_len<sizeof(txbuild->crds)/sizeof(txbuild->crds[0]) );
      49             : 
      50           0 :   fd_memcpy( &txbuild->bytes[ txbuild->bytes_len ], crds, crds_len );
      51             : 
      52           0 :   crds_msg_t * msg = (crds_msg_t *)txbuild->bytes;
      53           0 :   msg->crds_len++;
      54             : 
      55           0 :   crds_val_hdr_t * hdr = (crds_val_hdr_t *)crds;
      56             : 
      57           0 :   txbuild->crds[ txbuild->crds_len ].tag = hdr->tag;
      58           0 :   txbuild->crds[ txbuild->crds_len ].off = (ushort)txbuild->bytes_len;
      59           0 :   txbuild->crds[ txbuild->crds_len ].sz  = (ushort)crds_len;
      60           0 :   txbuild->crds_len++;
      61             : 
      62           0 :   txbuild->bytes_len += crds_len;
      63           0 : }

Generated by: LCOV version 1.14