LCOV - code coverage report
Current view: top level - include/net - tipc.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 0 8 0.0 %
Date: 2022-03-28 16:04:14 Functions: 0 0 -
Branches: 0 2 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * include/net/tipc.h: Include file for TIPC message header routines
       3                 :            :  *
       4                 :            :  * Copyright (c) 2017 Ericsson AB
       5                 :            :  * All rights reserved.
       6                 :            :  *
       7                 :            :  * Redistribution and use in source and binary forms, with or without
       8                 :            :  * modification, are permitted provided that the following conditions are met:
       9                 :            :  *
      10                 :            :  * 1. Redistributions of source code must retain the above copyright
      11                 :            :  *    notice, this list of conditions and the following disclaimer.
      12                 :            :  * 2. Redistributions in binary form must reproduce the above copyright
      13                 :            :  *    notice, this list of conditions and the following disclaimer in the
      14                 :            :  *    documentation and/or other materials provided with the distribution.
      15                 :            :  * 3. Neither the names of the copyright holders nor the names of its
      16                 :            :  *    contributors may be used to endorse or promote products derived from
      17                 :            :  *    this software without specific prior written permission.
      18                 :            :  *
      19                 :            :  * Alternatively, this software may be distributed under the terms of the
      20                 :            :  * GNU General Public License ("GPL") version 2 as published by the Free
      21                 :            :  * Software Foundation.
      22                 :            :  *
      23                 :            :  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
      24                 :            :  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      25                 :            :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      26                 :            :  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
      27                 :            :  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      28                 :            :  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
      29                 :            :  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
      30                 :            :  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
      31                 :            :  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
      32                 :            :  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
      33                 :            :  * POSSIBILITY OF SUCH DAMAGE.
      34                 :            :  */
      35                 :            : 
      36                 :            : #ifndef _TIPC_HDR_H
      37                 :            : #define _TIPC_HDR_H
      38                 :            : 
      39                 :            : #include <linux/random.h>
      40                 :            : 
      41                 :            : #define KEEPALIVE_MSG_MASK 0x0e080000  /* LINK_PROTOCOL + MSG_IS_KEEPALIVE */
      42                 :            : 
      43                 :            : struct tipc_basic_hdr {
      44                 :            :         __be32 w[4];
      45                 :            : };
      46                 :            : 
      47                 :          0 : static inline __be32 tipc_hdr_rps_key(struct tipc_basic_hdr *hdr)
      48                 :            : {
      49                 :          0 :         u32 w0 = ntohl(hdr->w[0]);
      50                 :          0 :         bool keepalive_msg = (w0 & KEEPALIVE_MSG_MASK) == KEEPALIVE_MSG_MASK;
      51                 :          0 :         __be32 key;
      52                 :            : 
      53                 :            :         /* Return source node identity as key */
      54         [ #  # ]:          0 :         if (likely(!keepalive_msg))
      55                 :          0 :                 return hdr->w[3];
      56                 :            : 
      57                 :            :         /* Spread PROBE/PROBE_REPLY messages across the cores */
      58                 :          0 :         get_random_bytes(&key, sizeof(key));
      59                 :          0 :         return key;
      60                 :            : }
      61                 :            : 
      62                 :            : #endif

Generated by: LCOV version 1.14