LTE: how eNodeB selects a MME (FIRST attach)? - dns

I'm trying to figure out how eNodeB can select the MME, as far as I know, I think eNodeB query to a DNS (iDNS?) with the TAI FQDN, is made up with TAC low bit, TAC high bit, MCC and MNC I mean something like
tac-lb.tac-hb.tac.epc.mnc.mcc.3gppnetwork.org
but where eNodeB send that TAI FQDN?? Is there a list into eNodeB with the MMEI?
Where is the DNS? How eNodeB query it?
In case of eNodeB already has a MMEI list into it.... Any example? Any eNodeB config file? Something that can help me to reach out to understand?
Regards

The concept is based on MME selection function in section 4.3.8.3 of 23.401 3GPP specification. 'The MME selection function selects an available MME for serving a UE. The selection is based on network topology, i.e. the selected MME serves the UE's location and for overlapping MME service areas, the selection may prefer MMEs with service areas that reduce the probability of changing the MME. When a MME/SGSN selects a target MME, the selection function performs a simple load balancing between the possible target MMEs.'

Related

Can I reach Global Address List language independently?

I would like to create an excel tool which at some point of the operation opens the Global Address List of the Outlook. I have figured it out how to do this, but there was an issue when we tried it on a German languaged computer. I have solved it by check the UI language prior to opening the address book, but I wondered if there is a language independent way to do so? (So I don't need to create a case for every possible languages.)
My corresponding code portion is:
langCode=Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Select Case langCode
Case &H409
galStr="Global Address List"
Case &H40E
galStr="Globális címlista"
Case &H407
galStr="Globale Addressliste"
Case Else
galStr="Global Address List"
End Select
Set olApp=GetObject(,"Outlook.Application")
Set olGAL=olApp.GetNamespace("MAPI"). AddressLists(galStr)
Many thanks for your help.
Use Namespace.GetGlobalAddressList - it will return the GAL of the primary Exchange account in the profile.
As for the AddrList.AddressListType property, it will return olExchangeGlobalAddressList only for the GAL of the primary Exchange account. For a secondary account, it will be a generic olExchangeContainer.
If you have more than one Exchange account in the profile, you can figure out if a particular address list is GAL by reading two MAPI properties using AddressList.PropertyAccessor: PR_AB_PROVIDER_ID must be "DCA740C8C042101AB4B908002B2FE182"and PR_DISPLAY_TYPE must be DT_GLOBAL (0x00020000).
If using Redemption (I am its author) is an option, besides exposing RDOSession.Addressbook.GAL (similar to Namespace.GetGlobalAddressList in OOM), it also exposes RDOExchangeAccount.GAL property on the account level (AllRooms property is also exposed).
For user language and programming language independence there is enumeration.
OlAddressListType enumeration (Outlook)
Instead of trying to find the correct localized sting you may iterate over all address lists and get the GAL in the following way:
If(addrList.AddressListType ==
Outlook.OlAddressListType.olExchangeGlobalAddressList) Then
' this is GAL
End If
You can use the NameSpace.CreateRecipient function which creates a Recipient object. After resolving a recipient against the address book you may get the email address.
Also I've found the following article - Get the Global Address List or a set of address lists for a store which you may find helpful.

Database connection according to drop-down list

I am an interesting project, but I have a problem that I would like to solve before starting.
I am in the process of building an extranet for a franchise. The franchise therefore has several franchisees in several geographic sectors. They will have to connect from the same login page (same application). In this page there will be a region selector There will be a database per franchisee (constraint imposed)
Do you know a method so that depending on the region selector, the user connects to the chosen base?
for example:
region paca => base 1
region center => base 2
etc,
I know Laravel relatively well, but I have never had the problem so far. If anyone has an idea or would have had the same scenario, I would be very grateful if they would share their info.
Thank you in advance for your help
There is multiple ways to achieve what you want, it depend of what is duplicate.
Just, you have to store the information somewhere, and to have an object that say "option", for example:
"regionA": {
"db": "dbA",
"name": "Region A"
}
Just manage it as you want, that's why I write it in JSON.
Each region have a different server
You just redirect people on good website, and each website use it's own database
One server, but different schema in database
Use different connection, according to the region. For example, the region "A" use the database "software_a".
For example, one will do:
DB:connection("db_regionA")
Another will do:
DB:connection("db_regionB")
One database, one table, all rows says it's region
Just in SELECT request, such as:
SELECT * FROM mytable WHERE region = "A"

Use ACL isGranted inside a voter isGranted

Edit: See my answer below.
For my needs, I decided to use both ACL and voters for my app (maybe it is not the best way, please, tell me if I'm wrong with this).
My entities represent a factory where there are :
Lines owning Workshops owning Equipments owning Spare Parts.
I want to give either a manager or a viewer access to a line level. For this purpose, I use an ACL on the line.
Because there are more than 5000 spare parts per line, I don't want to write 5000 ace to tell symfony that this user, which is allowed to manage this line, can manage the spare parts of the line.
To solve this problem, I decided to add a voter before the acl check.
I do a isGranted('edit',$sparepart) which is handled by a voter, and inside my own voter, I want to perform a isGranted('OPERATOR',$line).
Actually, I have many more things to check (is the user plant manager ? for example) and I like to combine the voter and the ACL.
Unfortunately, I'm a bit lost and I don't manage to call the right "isGranted" from my voter, I get an infinite loop error.
Voter isGranted
$authChecker = $this->get('security.authorization_checker');
$authChecker->isGranted('', $post);
ACL isGranted
$securityContext = $this->get('security.context');
$securityContext->isGranted('EDIT', $comment);
I understand this might be a bit confusing, and maybe I'm not doing it the right way :s
Thanks for your help !
So I finally did this in another way.
I use one voter and I created new entities to manage my access.
I have a LineAccess entity with:
ManyToOne: Line
ManyToOne: User
Sp_access: smallint
Cart_access: smallint
Line_access: smallint
So I check everything by myself and I also manage the links with my LineAccess entity and CustomerAccess entity.
Finally, it is the best way I think. Good luck
Here is the full problem for the curious :
For each user, I want to be able to select his permissions with this table.
If, for example, I check Boeing (the customer) manage. I will create an ACL/ACE with OPERATOR for this $customer.
That's it. Later, I want to check if this user is able to manage a line by first looking at a 'OPERATOR' on $line but if it doesn't exist, I will check 'OPERATOR' on $plant, and then 'OPERATOR' on $customer.
If I select Manage Dreamliner plant, I get this :
You can see that I'm still able to chose the kind of access to spare parts and cart. I can set this user, which is a plant manager, another permission : Spare parts manage. For that kind of permission, I can use the mask builder feature which allows me to store with a single integer "SP_MANAGER, CART_VALIDATE, LINE MANAGE', for example.
You can see that it gets a little complex here and this is why I think that ACL are my best friends, but I wanted to add a level of control in which I can manually select which isGranted() method, and on which entity.
I tried to be precise but it is not that easy :s
Thanks a lot for your help !
Voters and ACL are both standalone architecture approach to authorization. I'd recommend using Voters only, since they're easier to understand, use and extend.
For more details on this comparison, check these explanatory slides.
Where exactly you can't use Voters instead of ACL?
Also, why you need to nest Voters/ACL?
Thanks for your quick answer !
Actually, I thought I needed ACL because I have to put in the database my permissions. And here is the kind of permissions I want :
User A:
Manage line 1 (include workshops, equipments, sp) and can create shopping carts in this line.
View line 2 (can't manage the line but can see it's content) and can only validate the shopping carts.
So I thought it was good to use ACL because that way I can write in the database the permissions for each objects.
I also like the fact that I can use masks.
(There is the same logic on the Plant level)

UML Activity Diagram for android project

I have created the below diagram and I wanted to know if the diagram that I have done is correct.
The below diagram is based on an android application. When the application loads the user is given 3 button to select add, update and help. On click on add button the user is given an option to add a new user or add a new item. When he select either of the options he enters the required data once the data is entered the system check if all the values are entered correctly and then finally saved. The same process is applied for update.
Your diagram misses an entry point. Though it's rather obvious that the top action is the start, only the entry point is the one indicating the beginning.
You can omit most of the diamonds and directly transfer via a guard from actions. So your conditions should be guards and written as [Yes] or [No]. The top most action (and quite some others) is(/are) indeed what should be written inside (or aside) the diamond below.
An excerpt for an update could look like this:
Finally Values added does not look like an action but rather as state. It should be omitted. Alternatively use differently named end flows.
So far for the formal points. But as #eyp said: it's a good one and one can understand what you tried to express. The above is just for the picky teachers.
It's a good one but it lacks some detail in the diamonds. You should write besides the diamon the question before choosing the next setp to do.
For example in the diamond after Check update value you may write is valid? or another question that clarifies more the business logic.

Designing a one EVERYTHING search box (date+address+keywords)

I'm storing information about local "events". They are described by 3 things - address, date, keywords(tags). I want to have only one search box for at least address and keywords. The date might go to a separate field. I'm assuming that most people will search for events that are taking place "today" so this filter won't get that much traffic.
I need those addresses to be correct (because I'm geocoding them afterwards) so I need to validate them before submitting the form and display a list of "did you mean" if a user made a typo there. I can't do life search here. I can do a live search on keywords. Keep in mind that a user can make a typo there too and I want to catch that.
Is there a clever way to design the input's parser in this case to guess which is supposed to be address and which keywords?
OR
Is there a way to actually parse it as user is entering his query? Maybe I should show autocomplete hints for keywords, after 3 first characters are entered, and if user denies to use them then to assume that it's a part of an address he's typing.
What do You think?
Take a look at Document Cloud's Visual search
http://documentcloud.github.com/visualsearch/#demo

Resources