This file is indexed.

/usr/include/liberasurecode/xor_code.h is in liberasurecode-dev 1.5.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
/* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * Redistributions in binary form must reproduce the above copyright notice, this
 * list of conditions and the following disclaimer in the documentation and/or
 * other materials provided with the distribution.  THIS SOFTWARE IS PROVIDED BY
 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _XOR_CODE_H
#define _XOR_CODE_H

#define MAX_DATA 32
#define MAX_PARITY MAX_DATA

#define MEM_ALIGN_SIZE 16

#define DECODED_MISSING_IDX MAX_DATA

typedef enum { FAIL_PATTERN_GE_HD, // Num failures greater than or equal to HD
               FAIL_PATTERN_0D_0P, 
               FAIL_PATTERN_1D_0P, 
               FAIL_PATTERN_2D_0P, 
               FAIL_PATTERN_3D_0P, 
               FAIL_PATTERN_1D_1P, 
               FAIL_PATTERN_1D_2P, 
               FAIL_PATTERN_2D_1P, 
               FAIL_PATTERN_0D_1P, 
               FAIL_PATTERN_0D_2P, 
               FAIL_PATTERN_0D_3P } failure_pattern_t;

#define is_aligned(x) (((unsigned long)x & (MEM_ALIGN_SIZE-1)) == 0)
#define num_unaligned_end(size) (size % MEM_ALIGN_SIZE)

struct xor_code_s;

typedef struct xor_code_s
{
  int k;
  int m;
  int hd;
  unsigned int *parity_bms;
  unsigned int *data_bms;
  int (*decode)(struct xor_code_s *code_desc, char **data, char **parity, int *missing_idxs, int blocksize, int decode_parity);
  void (*encode)(struct xor_code_s *code_desc, char **data, char **parity, int blocksize);
  int (*fragments_needed)(struct xor_code_s *code_desc, int *missing_idxs, int *fragments_to_exclude, int *fragments_needed);
} xor_code_t;

int is_data_in_parity(int data_idx, unsigned int parity_bm);

int does_parity_have_data(int parity_idx, unsigned int data_bm);

int parity_bit_lookup(xor_code_t *code_desc, int index);

int data_bit_lookup(xor_code_t *code_desc, int index);

int missing_elements_bm(xor_code_t *code_desc, int *missing_elements, int (*bit_lookup_func)(xor_code_t *code_desc, int index));

failure_pattern_t get_failure_pattern(xor_code_t *code_desc, int *missing_idxs);

void fast_memcpy(char *dst, char *src, int size);

void xor_bufs_and_store(char *buf1, char *buf2, int blocksize);

void xor_code_encode(xor_code_t *code_desc, char **data, char **parity, int blocksize);

void selective_encode(xor_code_t *code_desc, char **data, char **parity, int *missing_parity, int blocksize);

int * get_missing_parity(xor_code_t *code_desc, int *missing_idxs);

int * get_missing_data(xor_code_t *code_desc, int *missing_idxs);

int num_missing_data_in_parity(xor_code_t *code_desc, int parity_idx, int *missing_data);

int index_of_connected_parity(xor_code_t *code_desc, int data_index, int *missing_parity, int *missing_data);

void remove_from_missing_list(int element, int *missing_list);

int* get_symbols_needed(xor_code_t *code_desc, int *missing_list, int *fragments_to_exclude);

void xor_reconstruct_one(xor_code_t *code_desc, char **data, char **parity, int *missing_idxs, int index_to_reconstruct, int blocksize);

xor_code_t* init_xor_hd_code(int k, int m, int hd);

#endif