Native less uid lookups

This commit is contained in:
M66B 2016-01-19 21:10:48 +01:00
parent 65a26a7bc1
commit 113c827695
1 changed files with 11 additions and 10 deletions

View File

@ -634,20 +634,21 @@ void handle_ip(const struct arguments *args, const uint8_t *buffer, const uint16
// Get uid // Get uid
jint uid = -1; jint uid = -1;
if ((protocol == IPPROTO_TCP && version == 4) || protocol == IPPROTO_UDP) { if ((protocol == IPPROTO_TCP && (!args->filter || syn)) || protocol == IPPROTO_UDP) {
log_android(ANDROID_LOG_INFO, "get uid %s/%u syn %d", dest, dport, syn); log_android(ANDROID_LOG_INFO, "get uid %s/%u syn %d", dest, dport, syn);
int tries = 0; int tries = 0;
while (uid < 0 && tries++ < UID_MAXTRY) { while (uid < 0 && tries++ < UID_MAXTRY) {
// Most likely in IPv6 table // Check IPv6 table first
int8_t saddr128[16]; if (version == 4) {
memset(saddr128, 0, 10); int8_t saddr128[16];
saddr128[10] = 0xFF; memset(saddr128, 0, 10);
saddr128[11] = 0xFF; saddr128[10] = 0xFF;
memcpy(saddr128 + 12, saddr, 4); saddr128[11] = 0xFF;
uid = get_uid(protocol, 6, saddr128, sport, tries == UID_MAXTRY); memcpy(saddr128 + 12, saddr, 4);
uid = get_uid(protocol, 6, saddr128, sport, tries == UID_MAXTRY);
}
// Fallback to IPv4 table if (uid < 0)
if (uid < 0 && version == 4)
uid = get_uid(protocol, version, saddr, sport, tries == UID_MAXTRY); uid = get_uid(protocol, version, saddr, sport, tries == UID_MAXTRY);
// Retry delay // Retry delay