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: 2025-09-19 04:41:14 Functions: 0 3 0.0 %

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

Generated by: LCOV version 1.14