source: ogServer-Git/src/dbi.h @ 216986e

Last change on this file since 216986e was 047677b, checked in by OpenGnSys Support Team <soporte-og@…>, 3 years ago

#1054 Fix og_legacy_partition code buffer size

The "code" member of the og_legacy_partition is used to hold the string of
the partition type *name* for legacy parameter strings. Example:

par=2*cpt=LINUX-SWAP*sfi=LINUX-SWAP*tam=10000000*ope=0

Problem: Buffer size is smaller than possible values for this member.
Fix: Increase buffer size up to the max length defined in the DB
for the corresponding column.

  • Property mode set to 100644
File size: 2.8 KB
Line 
1#ifndef __OG_DBI
2#define __OG_DBI
3
4#include <dbi/dbi.h>
5#include <stdbool.h>
6#include <sys/stat.h>
7
8struct og_dbi_config {
9        const char      *user;
10        const char      *pass;
11        const char      *ip;
12        const char      *port;
13        const char      *name;
14};
15
16struct og_dbi {
17        dbi_conn        conn;
18        dbi_inst        inst;
19};
20
21struct og_dbi *og_dbi_open(struct og_dbi_config *config);
22void og_dbi_close(struct og_dbi *db);
23
24#define OG_DB_COMPUTER_NAME_MAXLEN      100
25#define OG_DB_CENTER_NAME_MAXLEN        100
26#define OG_DB_ROOM_NAME_MAXLEN          100
27#define OG_DB_ROOM_LOC_MAXLEN           255
28#define OG_DB_SERIAL_NUMBER_MAXLEN      25
29#define OG_DB_IMAGE_DESCRIPTION_MAXLEN  250
30#define OG_DB_PART_NAME_MAXLEN  250
31#define OG_DB_IMAGE_NAME_MAXLEN 50
32#define OG_DB_FILESYSTEM_MAXLEN 16
33#define OG_DB_NETDRIVER_MAXLEN  30
34#define OG_DB_NETIFACE_MAXLEN   4
35#define OG_DB_LIVEDIR_MAXLEN    50
36#define OG_DB_INT8_MAXLEN       8
37#define OG_DB_BOOT_MAXLEN       30
38#define OG_DB_INT_MAXLEN        11
39#define OG_DB_MAC_MAXLEN        15
40#define OG_DB_IP_MAXLEN         15
41#define OG_DB_SMALLINT_MAXLEN   6
42
43struct og_image_legacy {
44        char software_id[OG_DB_INT_MAXLEN + 1];
45        char image_id[OG_DB_INT_MAXLEN + 1];
46        char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
47        char repo[OG_DB_IP_MAXLEN + 1];
48        char part[OG_DB_SMALLINT_MAXLEN + 1];
49        char disk[OG_DB_SMALLINT_MAXLEN + 1];
50        char code[OG_DB_INT8_MAXLEN + 1];
51};
52
53struct og_image {
54        char name[OG_DB_IMAGE_NAME_MAXLEN + 1];
55        char description[OG_DB_IMAGE_DESCRIPTION_MAXLEN + 1];
56        uint64_t software_id;
57        uint64_t center_id;
58        uint64_t datasize;
59        uint64_t group_id;
60        uint64_t type;
61        uint64_t id;
62        struct stat image_stats;
63};
64
65struct og_legacy_partition {
66        char partition[OG_DB_SMALLINT_MAXLEN + 1];
67        char code[OG_DB_PART_NAME_MAXLEN + 1];
68        char size[OG_DB_INT_MAXLEN + 1];
69        char filesystem[OG_DB_FILESYSTEM_MAXLEN + 1];
70        char format[2]; /* Format is a boolean 0 or 1 => length is 2 */
71};
72
73struct og_computer {
74        unsigned int    procedure_id;
75        unsigned int    hardware_id;
76        unsigned int    repo_id;
77        unsigned int    center;
78        unsigned int    room;
79        unsigned int    id;
80        bool            maintenance;
81        bool            remote;
82        char            serial_number[OG_DB_SERIAL_NUMBER_MAXLEN + 1];
83        char            netdriver[OG_DB_NETDRIVER_MAXLEN + 1];
84        char            name[OG_DB_COMPUTER_NAME_MAXLEN + 1];
85        char            netiface[OG_DB_NETIFACE_MAXLEN + 1];
86        char            livedir[OG_DB_LIVEDIR_MAXLEN + 1];
87        char            netmask[OG_DB_IP_MAXLEN + 1];
88        char            boot[OG_DB_BOOT_MAXLEN + 1];
89        char            mac[OG_DB_MAC_MAXLEN + 1];
90        char            ip[OG_DB_IP_MAXLEN + 1];
91};
92
93struct og_room {
94        uint32_t        center;
95        uint32_t        group;
96        char            location[OG_DB_ROOM_LOC_MAXLEN + 1];
97        char            name[OG_DB_ROOM_NAME_MAXLEN + 1];
98        char            gateway[OG_DB_IP_MAXLEN + 1];
99        char            netmask[OG_DB_IP_MAXLEN + 1];
100        char            ntp[OG_DB_IP_MAXLEN + 1];
101        char            dns[OG_DB_IP_MAXLEN + 1];
102        bool            remote;
103};
104
105struct in_addr;
106int og_dbi_get_computer_info(struct og_dbi *dbi, struct og_computer *computer,
107                             struct in_addr addr);
108int og_dbi_add_image(struct og_dbi *dbi, const struct og_image *image);
109
110int og_dbi_schema_update(void);
111
112#endif
Note: See TracBrowser for help on using the repository browser.