Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
4b45b24d
Commit
4b45b24d
authored
Jun 28, 2008
by
Juan Lang
Committed by
Alexandre Julliard
Jun 30, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
inetmib1: Free memory when DLL is unloaded.
parent
36468162
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
68 additions
and
28 deletions
+68
-28
main.c
dlls/inetmib1/main.c
+68
-28
No files found.
dlls/inetmib1/main.c
View file @
4b45b24d
...
...
@@ -29,24 +29,6 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
inetmib1
);
BOOL
WINAPI
DllMain
(
HINSTANCE
hinstDLL
,
DWORD
fdwReason
,
LPVOID
lpvReserved
)
{
TRACE
(
"(0x%p, %d, %p)
\n
"
,
hinstDLL
,
fdwReason
,
lpvReserved
);
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
DisableThreadLibraryCalls
(
hinstDLL
);
break
;
case
DLL_PROCESS_DETACH
:
break
;
default:
break
;
}
return
TRUE
;
}
/**
* Utility functions
*/
...
...
@@ -113,6 +95,7 @@ struct mibImplementation
AsnObjectIdentifier
name
;
void
(
*
init
)(
void
);
varqueryfunc
query
;
void
(
*
cleanup
)(
void
);
};
static
UINT
mib2IfNumber
[]
=
{
1
,
3
,
6
,
1
,
2
,
1
,
2
,
1
};
...
...
@@ -130,6 +113,11 @@ static void mib2IfNumberInit(void)
}
}
static
void
mib2IfNumberCleanup
(
void
)
{
HeapFree
(
GetProcessHeap
(),
0
,
ifTable
);
}
static
BOOL
mib2IfNumberQuery
(
BYTE
bPduType
,
SnmpVarBind
*
pVarBind
,
AsnInteger32
*
pErrorStatus
)
{
...
...
@@ -651,6 +639,11 @@ static void mib2IpAddrInit(void)
}
}
static
void
mib2IpAddrCleanup
(
void
)
{
HeapFree
(
GetProcessHeap
(),
0
,
ipAddrTable
);
}
static
void
oidToIpAddrRow
(
AsnObjectIdentifier
*
oid
,
void
*
dst
)
{
MIB_IPADDRROW
*
row
=
dst
;
...
...
@@ -734,6 +727,11 @@ static void mib2IpRouteInit(void)
}
}
static
void
mib2IpRouteCleanup
(
void
)
{
HeapFree
(
GetProcessHeap
(),
0
,
ipRouteTable
);
}
static
void
oidToIpForwardRow
(
AsnObjectIdentifier
*
oid
,
void
*
dst
)
{
MIB_IPFORWARDROW
*
row
=
dst
;
...
...
@@ -809,6 +807,11 @@ static void mib2IpNetInit(void)
}
}
static
void
mib2IpNetCleanup
(
void
)
{
HeapFree
(
GetProcessHeap
(),
0
,
ipNetTable
);
}
static
BOOL
mib2IpNetQuery
(
BYTE
bPduType
,
SnmpVarBind
*
pVarBind
,
AsnInteger32
*
pErrorStatus
)
{
...
...
@@ -1050,6 +1053,11 @@ static void mib2UdpEntryInit(void)
}
}
static
void
mib2UdpEntryCleanup
(
void
)
{
HeapFree
(
GetProcessHeap
(),
0
,
udpTable
);
}
static
struct
structToAsnValue
mib2UdpEntryMap
[]
=
{
{
FIELD_OFFSET
(
MIB_UDPROW
,
dwLocalAddr
),
copyIpAddr
},
{
FIELD_OFFSET
(
MIB_UDPROW
,
dwLocalPort
),
copyInt
},
...
...
@@ -1129,16 +1137,20 @@ static BOOL mib2UdpEntryQuery(BYTE bPduType, SnmpVarBind *pVarBind,
/* This list MUST BE lexicographically sorted */
static
struct
mibImplementation
supportedIDs
[]
=
{
{
DEFINE_OID
(
mib2IfNumber
),
mib2IfNumberInit
,
mib2IfNumberQuery
},
{
DEFINE_OID
(
mib2IfEntry
),
NULL
,
mib2IfEntryQuery
},
{
DEFINE_OID
(
mib2Ip
),
mib2IpStatsInit
,
mib2IpStatsQuery
},
{
DEFINE_OID
(
mib2IpAddr
),
mib2IpAddrInit
,
mib2IpAddrQuery
},
{
DEFINE_OID
(
mib2IpRoute
),
mib2IpRouteInit
,
mib2IpRouteQuery
},
{
DEFINE_OID
(
mib2IpNet
),
mib2IpNetInit
,
mib2IpNetQuery
},
{
DEFINE_OID
(
mib2Icmp
),
mib2IcmpInit
,
mib2IcmpQuery
},
{
DEFINE_OID
(
mib2Tcp
),
mib2TcpInit
,
mib2TcpQuery
},
{
DEFINE_OID
(
mib2Udp
),
mib2UdpInit
,
mib2UdpQuery
},
{
DEFINE_OID
(
mib2UdpEntry
),
mib2UdpEntryInit
,
mib2UdpEntryQuery
},
{
DEFINE_OID
(
mib2IfNumber
),
mib2IfNumberInit
,
mib2IfNumberQuery
,
mib2IfNumberCleanup
},
{
DEFINE_OID
(
mib2IfEntry
),
NULL
,
mib2IfEntryQuery
,
NULL
},
{
DEFINE_OID
(
mib2Ip
),
mib2IpStatsInit
,
mib2IpStatsQuery
,
NULL
},
{
DEFINE_OID
(
mib2IpAddr
),
mib2IpAddrInit
,
mib2IpAddrQuery
,
mib2IpAddrCleanup
},
{
DEFINE_OID
(
mib2IpRoute
),
mib2IpRouteInit
,
mib2IpRouteQuery
,
mib2IpRouteCleanup
},
{
DEFINE_OID
(
mib2IpNet
),
mib2IpNetInit
,
mib2IpNetQuery
,
mib2IpNetCleanup
},
{
DEFINE_OID
(
mib2Icmp
),
mib2IcmpInit
,
mib2IcmpQuery
,
NULL
},
{
DEFINE_OID
(
mib2Tcp
),
mib2TcpInit
,
mib2TcpQuery
,
NULL
},
{
DEFINE_OID
(
mib2Udp
),
mib2UdpInit
,
mib2UdpQuery
,
NULL
},
{
DEFINE_OID
(
mib2UdpEntry
),
mib2UdpEntryInit
,
mib2UdpEntryQuery
,
mib2UdpEntryCleanup
},
};
static
UINT
minSupportedIDLength
;
...
...
@@ -1164,6 +1176,15 @@ BOOL WINAPI SnmpExtensionInit(DWORD dwUptimeReference,
return
TRUE
;
}
static
void
cleanup
(
void
)
{
UINT
i
;
for
(
i
=
0
;
i
<
sizeof
(
supportedIDs
)
/
sizeof
(
supportedIDs
[
0
]);
i
++
)
if
(
supportedIDs
[
i
].
cleanup
)
supportedIDs
[
i
].
cleanup
();
}
static
struct
mibImplementation
*
findSupportedQuery
(
UINT
*
ids
,
UINT
idLength
,
UINT
*
matchingIndex
)
{
...
...
@@ -1260,3 +1281,22 @@ BOOL WINAPI SnmpExtensionQuery(BYTE bPduType, SnmpVarBindList *pVarBindList,
*
pErrorIndex
=
errorIndex
;
return
TRUE
;
}
BOOL
WINAPI
DllMain
(
HINSTANCE
hinstDLL
,
DWORD
fdwReason
,
LPVOID
lpvReserved
)
{
TRACE
(
"(0x%p, %d, %p)
\n
"
,
hinstDLL
,
fdwReason
,
lpvReserved
);
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
DisableThreadLibraryCalls
(
hinstDLL
);
break
;
case
DLL_PROCESS_DETACH
:
cleanup
();
break
;
default:
break
;
}
return
TRUE
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment