Skip to content

Commit e5ea5da

Browse files
committed
Consider address family in update
With IPv6, there are two address families for one device. Consider address family when handling update messages.
1 parent b7141ac commit e5ea5da

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

metadata_writer_inventory_conn.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ static int32_t md_inventory_execute_insert_update(struct md_writer_sqlite *mws,
8080
sqlite3_bind_int(stmt, 11, mce->connectivity) ||
8181
sqlite3_bind_int(stmt, 13, mce->quality) ||
8282
sqlite3_bind_int(stmt, 14, mce->interface_type) ||
83-
sqlite3_bind_text(stmt, 16, mce->network_address, strlen(mce->network_address), SQLITE_STATIC)){
83+
sqlite3_bind_int(stmt, 16, mce->network_address_family) ||
84+
sqlite3_bind_text(stmt, 17, mce->network_address, strlen(mce->network_address), SQLITE_STATIC)){
8485
META_PRINT_SYSLOG(mws->parent, LOG_ERR, "Failed to bind values to INSERT query\n");
8586
return SQLITE_ERROR;
8687
}
@@ -201,18 +202,19 @@ static int32_t md_inventory_update_event(struct md_writer_sqlite *mws,
201202
sqlite3_bind_int(stmt, 5, mce->quality) ||
202203
sqlite3_bind_int(stmt, 7, mce->l3_session_id) ||
203204
sqlite3_bind_int(stmt, 8, mce->l4_session_id) ||
204-
sqlite3_bind_text(stmt, 9, mce->network_address, strlen(mce->network_address), SQLITE_STATIC)) {
205+
sqlite3_bind_int(stmt, 9, mce->network_address_family) ||
206+
sqlite3_bind_text(stmt, 10, mce->network_address, strlen(mce->network_address), SQLITE_STATIC)) {
205207
META_PRINT_SYSLOG(mws->parent, LOG_ERR, "Failed to bind values to UPDATE query\n");
206208
return SQLITE_ERROR;
207209
}
208210

209211
if (mws->api_version == 2 && mce->interface_type == INTERFACE_MODEM) {
210-
if (sqlite3_bind_text(stmt, 10, mce->imei, strlen(mce->imei), SQLITE_STATIC)) {
212+
if (sqlite3_bind_text(stmt, 11, mce->imei, strlen(mce->imei), SQLITE_STATIC)) {
211213
META_PRINT_SYSLOG(mws->parent, LOG_ERR, "Failed to bind IMEI\n");
212214
return SQLITE_ERROR;
213215
}
214216
} else {
215-
if (sqlite3_bind_text(stmt, 10, mce->interface_id, strlen(mce->interface_id), SQLITE_STATIC)) {
217+
if (sqlite3_bind_text(stmt, 11, mce->interface_id, strlen(mce->interface_id), SQLITE_STATIC)) {
216218
META_PRINT_SYSLOG(mws->parent, LOG_ERR, "Failed to bind interface id\n");
217219
return SQLITE_ERROR;
218220
}
@@ -349,7 +351,8 @@ static int16_t md_inventory_get_last_update(struct md_writer_sqlite *mws,
349351

350352
if (sqlite3_bind_int(stmt, 1, mce->l3_session_id) ||
351353
sqlite3_bind_int(stmt, 2, mce->l4_session_id) ||
352-
sqlite3_bind_text(stmt, 4, mce->network_address, strlen(mce->network_address), SQLITE_STATIC)) {
354+
sqlite3_bind_int(stmt, 4, mce->network_address_family) ||
355+
sqlite3_bind_text(stmt, 5, mce->network_address, strlen(mce->network_address), SQLITE_STATIC)) {
353356
META_PRINT_SYSLOG(mws->parent, LOG_ERR, "Failed to bind values to SELECT query\n");
354357
return retval;
355358
}

metadata_writer_sqlite.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,13 @@
7676
"Quality INTEGER," \
7777
"InterfaceType INTEGER NOT NULL," \
7878
"InterfaceId TEXT NOT NULL," \
79+
"NetworkAddressFamily INTEGER NOT NULL," \
7980
"NetworkAddress TEXT NOT NULL," \
8081
"NetworkProvider INT," \
8182
"EventValueStr TEXT, " \
8283
"PRIMARY KEY(SessionId,SessionIdMultip,"\
8384
"L3SessionId,L4SessionId,InterfaceId,"\
84-
"NetworkAddress))"
85+
"NetworkAddressFamily,NetworkAddress))"
8586

8687
#define CREATE_GPS_SQL "CREATE TABLE IF NOT EXISTS GpsUpdate(" \
8788
"NodeId INTEGER NOT NULL," \
@@ -137,8 +138,8 @@
137138
#define INSERT_UPDATE "INSERT INTO NetworkUpdates(NodeId,SessionId,"\
138139
"SessionIdMultip,Timestamp,Sequence,L3SessionId,"\
139140
"L4SessionId,EventType,EventParam,HasIp,Connectivity,ConnectionMode,Quality"\
140-
",InterfaceType,InterfaceId,NetworkAddress,NetworkProvider,EventValueStr) " \
141-
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
141+
",InterfaceType,InterfaceId,NetworkAddressFamily,NetworkAddress,NetworkProvider,EventValueStr) " \
142+
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
142143

143144
#define INSERT_GPS_EVENT "INSERT INTO GpsUpdate(NodeId,BootCount" \
144145
",BootMultiplier,Timestamp" \
@@ -163,6 +164,7 @@
163164
" FROM NetworkUpdates WHERE "\
164165
"L3SessionId=? AND "\
165166
"L4SessionId=? AND InterfaceId=? AND "\
167+
"NetworkAddressFamily=? AND "\
166168
"NetworkAddress=? ORDER BY Timestamp DESC LIMIT 1;"
167169

168170
//The reason NetworkAddress is used here, is that we first identify by L3/L4
@@ -178,7 +180,8 @@
178180
"Quality=?,EventValueStr=? " \
179181
"WHERE "\
180182
"L3SessionId=? AND L4SessionId=? " \
181-
"AND NetworkAddress=? AND InterfaceId=?"
183+
"AND NetworkAddressFamily=? AND "\
184+
"NetworkAddress=? AND InterfaceId=?"
182185

183186
#define UPDATE_USAGE "UPDATE DataUse SET " \
184187
"RxData = RxData + ?, TxData = TxData + ? " \

0 commit comments

Comments
 (0)