diff --git a/PmpMyApp.xcodeproj/tyler.mode1 b/PmpMyApp.xcodeproj/tyler.mode1
index 1ec7384..633f1c2 100644
--- a/PmpMyApp.xcodeproj/tyler.mode1
+++ b/PmpMyApp.xcodeproj/tyler.mode1
@@ -197,6 +197,7 @@
ChosenToolbarItems
active-target-popup
+ active-buildstyle-popup
action
NSToolbarFlexibleSpaceItem
buildOrClean
@@ -218,6 +219,8 @@
Layout
+ BecomeActive
+
ContentConfiguration
PBXBottomSmartGroupGIDs
@@ -255,7 +258,6 @@
29B97314FDCFA39411CA2CEA
080E96DDFE201D6D7F000001
- 2F5A486C0B7559600052B0C1
29B97315FDCFA39411CA2CEA
2F18D5690B7C515D00149D44
29B97317FDCFA39411CA2CEA
@@ -265,14 +267,13 @@
PBXSmartGroupTreeModuleOutlineStateSelectionKey
- 6
- 2
+ 4
1
0
PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
- {{0, 0}, {186, 861}}
+ {{0, 0}, {186, 611}}
PBXTopSmartGroupGIDs
@@ -284,14 +285,14 @@
GeometryConfiguration
Frame
- {{0, 0}, {203, 879}}
+ {{0, 0}, {203, 629}}
GroupTreeTableConfiguration
MainColumn
186
RubberWindowFrame
- 1 108 1159 920 0 0 1680 1028
+ 0 108 1159 670 0 0 1280 778
Module
PBXSmartGroupTreeModule
@@ -302,14 +303,12 @@
Dock
- BecomeActive
-
ContentConfiguration
PBXProjectModuleGUID
1CE0B20306471E060097A5F4
PBXProjectModuleLabel
- route.c
+ XzibitController.m
PBXSplitModuleInNavigatorKey
Split0
@@ -317,11 +316,11 @@
PBXProjectModuleGUID
1CE0B20406471E060097A5F4
PBXProjectModuleLabel
- route.c
+ XzibitController.m
_historyCapacity
0
bookmark
- 2FAB94630BB71201005543DB
+ 2FDB4C4B0BB7151B002C4365
history
2F5A489C0B7565AE0052B0C1
@@ -329,11 +328,12 @@
2F901EC10B7AED84004FF42C
2F18D5750B7C51B000149D44
2F18D6800B7C6CA900149D44
- 2FC5249F0BAA452D0069F6CF
2FAB945B0BB71201005543DB
2FAB945C0BB71201005543DB
- 2FAB945D0BB71201005543DB
- 2FAB945E0BB71201005543DB
+ 2FDB4C360BB714E6002C4365
+ 2FDB4C380BB714E6002C4365
+ 2FDB4C490BB7151B002C4365
+ 2FC5249F0BAA452D0069F6CF
prevStack
@@ -343,14 +343,11 @@
2F5A49370B7575010052B0C1
2F901EC50B7AED84004FF42C
2F901ED80B7AEDBC004FF42C
- 2F901EE10B7AEE09004FF42C
2F18D5770B7C51B000149D44
2F18D6850B7C6CA900149D44
2F18D6860B7C6CA900149D44
- 2FAB945F0BB71201005543DB
- 2FAB94600BB71201005543DB
- 2FAB94610BB71201005543DB
- 2FAB94620BB71201005543DB
+ 2FDB4C3A0BB714E6002C4365
+ 2FDB4C4A0BB7151B002C4365
SplitCount
@@ -362,14 +359,14 @@
GeometryConfiguration
Frame
- {{0, 0}, {951, 874}}
+ {{0, 0}, {951, 624}}
RubberWindowFrame
- 1 108 1159 920 0 0 1680 1028
+ 0 108 1159 670 0 0 1280 778
Module
PBXNavigatorGroup
Proportion
- 874pt
+ 624pt
ContentConfiguration
@@ -382,9 +379,9 @@
GeometryConfiguration
Frame
- {{0, 879}, {951, 0}}
+ {{0, 629}, {951, 0}}
RubberWindowFrame
- 1 108 1159 920 0 0 1680 1028
+ 0 108 1159 670 0 0 1280 778
Module
XCDetailModule
@@ -408,9 +405,9 @@
TableOfContents
- 2FAB94550BB7100F005543DB
+ 2FDB4C2A0BB713F2002C4365
1CE0B1FE06471DED0097A5F4
- 2FAB94560BB7100F005543DB
+ 2FDB4C2B0BB713F2002C4365
1CE0B20306471E060097A5F4
1CE0B20506471E060097A5F4
@@ -544,11 +541,12 @@
5
WindowOrderList
+ 2F5A48970B7565A60052B0C1
1C0AD2B3069F1EA900FABCE6
- /Software/Subversion/trunk/PmpMyApp/PmpMyApp.xcodeproj
+ /Software/Subversion/PmpMyApp/PmpMyApp.xcodeproj
WindowString
- 1 108 1159 920 0 0 1680 1028
+ 0 108 1159 670 0 0 1280 778
WindowTools
@@ -578,7 +576,7 @@
Frame
{{0, 0}, {620, 0}}
RubberWindowFrame
- 1053 109 620 516 0 0 1680 1028
+ 656 127 620 516 0 0 1280 778
Module
PBXNavigatorGroup
@@ -586,10 +584,12 @@
0pt
+ BecomeActive
+
ContentConfiguration
PBXBuildLogShowsTranscriptDefaultKey
- {{0, 77}, {620, 393}}
+ {{0, 198}, {620, 272}}
PBXProjectModuleGUID
XCMainBuildResultsModuleGUID
PBXProjectModuleLabel
@@ -604,7 +604,7 @@
Frame
{{0, 5}, {620, 470}}
RubberWindowFrame
- 1053 109 620 516 0 0 1680 1028
+ 656 127 620 516 0 0 1280 778
Module
PBXBuildResultsModule
@@ -627,18 +627,18 @@
TableOfContents
2F5A48970B7565A60052B0C1
- 2F18D6AD0B7C706200149D44
+ 2FDB4C440BB714E6002C4365
1CD0528F0623707200166675
XCMainBuildResultsModuleGUID
ToolbarConfiguration
xcode.toolbar.config.build
WindowString
- 1053 109 620 516 0 0 1680 1028
+ 656 127 620 516 0 0 1280 778
WindowToolGUID
2F5A48970B7565A60052B0C1
WindowToolIsVisible
-
+
FirstTimeWindowDisplayed
@@ -974,7 +974,7 @@
Frame
{{0, 0}, {685, 376}}
RubberWindowFrame
- 992 611 685 417 0 0 1680 1028
+ 593 361 685 417 0 0 1280 778
Module
PBXRunSessionModule
@@ -997,14 +997,14 @@
TableOfContents
1C0AD2B3069F1EA900FABCE6
- 2FAB94570BB7100F005543DB
+ 2FDB4C2C0BB713F2002C4365
1CD0528B0623707200166675
- 2FAB94580BB7100F005543DB
+ 2FDB4C2D0BB713F2002C4365
ToolbarConfiguration
xcode.toolbar.config.run
WindowString
- 992 611 685 417 0 0 1680 1028
+ 593 361 685 417 0 0 1280 778
WindowToolGUID
1C0AD2B3069F1EA900FABCE6
WindowToolIsVisible
diff --git a/PmpMyApp.xcodeproj/tyler.pbxuser b/PmpMyApp.xcodeproj/tyler.pbxuser
index 783ba70..aeeb94d 100644
--- a/PmpMyApp.xcodeproj/tyler.pbxuser
+++ b/PmpMyApp.xcodeproj/tyler.pbxuser
@@ -67,8 +67,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 196546572;
- PBXWorkspaceStateSaveDate = 196546572;
+ PBXPerProjectTemplateStateSaveDate = 196547565;
+ PBXWorkspaceStateSaveDate = 196547565;
};
perUserProjectItems = {
2F18D5750B7C51B000149D44 /* PBXTextBookmark */ = 2F18D5750B7C51B000149D44 /* PBXTextBookmark */;
@@ -85,17 +85,15 @@
2F901EC10B7AED84004FF42C /* PBXTextBookmark */ = 2F901EC10B7AED84004FF42C /* PBXTextBookmark */;
2F901EC50B7AED84004FF42C /* PBXTextBookmark */ = 2F901EC50B7AED84004FF42C /* PBXTextBookmark */;
2F901ED80B7AEDBC004FF42C /* PBXTextBookmark */ = 2F901ED80B7AEDBC004FF42C /* PBXTextBookmark */;
- 2F901EE10B7AEE09004FF42C /* PBXTextBookmark */ = 2F901EE10B7AEE09004FF42C /* PBXTextBookmark */;
2FAB945B0BB71201005543DB /* PBXTextBookmark */ = 2FAB945B0BB71201005543DB /* PBXTextBookmark */;
2FAB945C0BB71201005543DB /* PBXTextBookmark */ = 2FAB945C0BB71201005543DB /* PBXTextBookmark */;
- 2FAB945D0BB71201005543DB /* PBXTextBookmark */ = 2FAB945D0BB71201005543DB /* PBXTextBookmark */;
- 2FAB945E0BB71201005543DB /* PBXTextBookmark */ = 2FAB945E0BB71201005543DB /* PBXTextBookmark */;
- 2FAB945F0BB71201005543DB /* PBXTextBookmark */ = 2FAB945F0BB71201005543DB /* PBXTextBookmark */;
- 2FAB94600BB71201005543DB /* PBXTextBookmark */ = 2FAB94600BB71201005543DB /* PBXTextBookmark */;
- 2FAB94610BB71201005543DB /* PBXTextBookmark */ = 2FAB94610BB71201005543DB /* PBXTextBookmark */;
- 2FAB94620BB71201005543DB /* PBXTextBookmark */ = 2FAB94620BB71201005543DB /* PBXTextBookmark */;
- 2FAB94630BB71201005543DB /* PBXTextBookmark */ = 2FAB94630BB71201005543DB /* PBXTextBookmark */;
2FC5249F0BAA452D0069F6CF /* PBXTextBookmark */ = 2FC5249F0BAA452D0069F6CF /* PBXTextBookmark */;
+ 2FDB4C360BB714E6002C4365 /* PBXTextBookmark */ = 2FDB4C360BB714E6002C4365 /* PBXTextBookmark */;
+ 2FDB4C380BB714E6002C4365 /* PBXTextBookmark */ = 2FDB4C380BB714E6002C4365 /* PBXTextBookmark */;
+ 2FDB4C3A0BB714E6002C4365 /* PBXTextBookmark */ = 2FDB4C3A0BB714E6002C4365 /* PBXTextBookmark */;
+ 2FDB4C490BB7151B002C4365 /* PBXTextBookmark */ = 2FDB4C490BB7151B002C4365 /* PBXTextBookmark */;
+ 2FDB4C4A0BB7151B002C4365 /* PBXTextBookmark */ = 2FDB4C4A0BB7151B002C4365 /* PBXTextBookmark */;
+ 2FDB4C4B0BB7151B002C4365 /* PBXTextBookmark */ = 2FDB4C4B0BB7151B002C4365 /* PBXTextBookmark */;
};
sourceControlManager = 2F5A48590B75586F0052B0C1 /* Source Control */;
userBuildSettings = {
@@ -137,9 +135,9 @@
};
2F18D6730B7C6AF400149D44 /* XzibitController.m */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {904, 847}}";
+ sepNavIntBoundsRect = "{{0, 0}, {904, 630}}";
sepNavSelRange = "{1069, 0}";
- sepNavVisRect = "{{0, 0}, {904, 847}}";
+ sepNavVisRect = "{{0, 24}, {904, 592}}";
};
};
2F18D6800B7C6CA900149D44 /* PBXTextBookmark */ = {
@@ -359,16 +357,16 @@
};
2F901ECE0B7AEDB5004FF42C /* route.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {904, 842}}";
- sepNavSelRange = "{170, 238}";
- sepNavVisRect = "{{0, 0}, {904, 842}}";
+ sepNavIntBoundsRect = "{{0, 0}, {904, 592}}";
+ sepNavSelRange = "{392, 0}";
+ sepNavVisRect = "{{0, 0}, {904, 592}}";
};
};
2F901ECF0B7AEDB5004FF42C /* route.c */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {904, 1764}}";
- sepNavSelRange = "{1775, 0}";
- sepNavVisRect = "{{0, 922}, {904, 842}}";
+ sepNavIntBoundsRect = "{{0, 0}, {904, 1932}}";
+ sepNavSelRange = "{2600, 0}";
+ sepNavVisRect = "{{0, 1326}, {904, 592}}";
};
};
2F901ED80B7AEDBC004FF42C /* PBXTextBookmark */ = {
@@ -381,16 +379,6 @@
vrLen = 135;
vrLoc = 0;
};
- 2F901EE10B7AEE09004FF42C /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
- name = "struct sockaddr_in *default_gw()";
- rLen = 32;
- rLoc = 1055;
- rType = 0;
- vrLen = 1288;
- vrLoc = 0;
- };
2FAB945B0BB71201005543DB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2F5A48700B75598F0052B0C1 /* pmpmapper.h */;
@@ -411,76 +399,6 @@
vrLen = 1631;
vrLoc = 6476;
};
- 2FAB945D0BB71201005543DB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F901ECE0B7AEDB5004FF42C /* route.h */;
- name = "route.h: 13";
- rLen = 238;
- rLoc = 170;
- rType = 0;
- vrLen = 452;
- vrLoc = 0;
- };
- 2FAB945E0BB71201005543DB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
- name = "route.c: 12";
- rLen = 2345;
- rLoc = 155;
- rType = 0;
- vrLen = 1178;
- vrLoc = 0;
- };
- 2FAB945F0BB71201005543DB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F5A48700B75598F0052B0C1 /* pmpmapper.h */;
- name = "pmpmapper.h: 21";
- rLen = 0;
- rLoc = 373;
- rType = 0;
- vrLen = 1110;
- vrLoc = 0;
- };
- 2FAB94600BB71201005543DB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
- name = "route.c: 12";
- rLen = 2345;
- rLoc = 155;
- rType = 0;
- vrLen = 1178;
- vrLoc = 0;
- };
- 2FAB94610BB71201005543DB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F5A48710B75598F0052B0C1 /* pmpmapper.c */;
- name = main;
- rLen = 4;
- rLoc = 7262;
- rType = 0;
- vrLen = 1631;
- vrLoc = 6476;
- };
- 2FAB94620BB71201005543DB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F901ECE0B7AEDB5004FF42C /* route.h */;
- name = "route.h: 13";
- rLen = 238;
- rLoc = 170;
- rType = 0;
- vrLen = 452;
- vrLoc = 0;
- };
- 2FAB94630BB71201005543DB /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
- name = "route.c: 93";
- rLen = 0;
- rLoc = 1775;
- rType = 0;
- vrLen = 1228;
- vrLoc = 1272;
- };
2FC5249F0BAA452D0069F6CF /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2F18D6730B7C6AF400149D44 /* XzibitController.m */;
@@ -491,6 +409,82 @@
vrLen = 1069;
vrLoc = 0;
};
+ 2FDB4C360BB714E6002C4365 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2FDB4C370BB714E6002C4365 /* nat-pmp.c */;
+ name = "(null): 44";
+ rLen = 0;
+ rLoc = 1904;
+ rType = 0;
+ vrLen = 1134;
+ vrLoc = 1091;
+ };
+ 2FDB4C370BB714E6002C4365 /* nat-pmp.c */ = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.c;
+ name = "nat-pmp.c";
+ path = "/Users/tyler/Library/Mail Downloads/nat-pmp.c";
+ sourceTree = "";
+ uiCtxt = {
+ sepNavWindowFrame = "{{288, 55}, {1025, 723}}";
+ };
+ };
+ 2FDB4C380BB714E6002C4365 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2F901ECE0B7AEDB5004FF42C /* route.h */;
+ name = "route.h: 25";
+ rLen = 0;
+ rLoc = 392;
+ rType = 0;
+ vrLen = 473;
+ vrLoc = 0;
+ };
+ 2FDB4C3A0BB714E6002C4365 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2FDB4C3B0BB714E6002C4365 /* nat-pmp.c */;
+ name = "(null): 44";
+ rLen = 0;
+ rLoc = 1904;
+ rType = 0;
+ vrLen = 1134;
+ vrLoc = 1091;
+ };
+ 2FDB4C3B0BB714E6002C4365 /* nat-pmp.c */ = {
+ isa = PBXFileReference;
+ name = "nat-pmp.c";
+ path = "/Users/tyler/Library/Mail Downloads/nat-pmp.c";
+ sourceTree = "";
+ };
+ 2FDB4C490BB7151B002C4365 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
+ name = "route.c: 120";
+ rLen = 0;
+ rLoc = 2600;
+ rType = 0;
+ vrLen = 1157;
+ vrLoc = 1797;
+ };
+ 2FDB4C4A0BB7151B002C4365 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2F901ECF0B7AEDB5004FF42C /* route.c */;
+ name = "route.c: 120";
+ rLen = 0;
+ rLoc = 2600;
+ rType = 0;
+ vrLen = 1157;
+ vrLoc = 1797;
+ };
+ 2FDB4C4B0BB7151B002C4365 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 2F18D6730B7C6AF400149D44 /* XzibitController.m */;
+ name = "XzibitController.m: 45";
+ rLen = 0;
+ rLoc = 1069;
+ rType = 0;
+ vrLen = 1066;
+ vrLoc = 3;
+ };
8D1107260486CEB800E47090 /* PmpMyApp */ = {
activeExec = 0;
executables = (
diff --git a/source/route.c b/source/route.c
index a0f3ac8..3c54b90 100644
--- a/source/route.c
+++ b/source/route.c
@@ -62,6 +62,7 @@ struct sockaddr_in *default_gw()
struct sockaddr *sa;
struct sockaddr *rti_info[RTAX_MAX];
struct sockaddr_in *sin;
+ bool found = false;
mib[0] = CTL_NET;
mib[1] = PF_ROUTE;
@@ -110,17 +111,28 @@ struct sockaddr_in *default_gw()
if (rtm->rtm_addrs & RTA_NETMASK)
bcopy(rti_info[RTAX_NETMASK], &mask, rti_info[RTAX_NETMASK]->sa_len);
- if (is_default_route(&addr, &mask))
- {
- sin = (struct sockaddr_in *)rti_info[RTAX_GATEWAY];
- break;
+ if (rtm->rtm_addrs & RTA_GATEWAY &&
+ is_default_route(&addr, &mask))
+ {
+ if (rti_info[RTAX_GATEWAY]) {
+ struct sockaddr_in *rti_sin = (struct sockaddr_in *)rti_info[RTAX_GATEWAY];
+ sin = (struct sockaddr_in *)(malloc(sizeof(struct sockaddr_in)));
+
+ sin->sin_family = rti_sin->sin_family;
+ sin->sin_port = rti_sin->sin_port;
+ sin->sin_addr.s_addr = rti_sin->sin_addr.s_addr;
+ memcpy(sin, rti_info[RTAX_GATEWAY], sizeof(struct sockaddr_in));
+
+ found = true;
+ break;
+ }
}
}
rtm = (struct rt_msghdr2 *)next;
}
- free(buf);
+ free(buf);
- return sin;
+ return (found ? sin : NULL);
}
\ No newline at end of file
diff --git a/source/route.h b/source/route.h
index 5d67022..8ae8ce1 100644
--- a/source/route.h
+++ b/source/route.h
@@ -22,6 +22,7 @@
#include
#include
#include
+#include
#include
#include